
C语言
文章平均质量分 69
canger_
Linux C/C++、golang、云原生
展开
-
offsetof宏和container_of宏
宏#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)测试代码#include<stdio.h>#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)typedef struct{ char name[50]; int index; float ff; double dd;原创 2020-05-24 10:18:08 · 331 阅读 · 0 评论 -
Linux C实现更改文件时间
主要是通过utime()这个函数实现的头文件:#include &amp;lt;sys/types.h&amp;gt; #include &amp;lt;utime.h&amp;gt;函数定义:int utime(const char * filename, struct utimbuf * buf);函数说明:utime()用来修改参数filename 文件所属的inode 存取时间。结构utimbu...原创 2018-08-13 17:50:37 · 4053 阅读 · 0 评论 -
Linux环境下段错误分析及调试方法
年轻时的每一个段错误,都会成为你程序人生上的垫脚石。如果是还在学习阶段的同学,希望能先通过自己的判断来找出段错误的地方。本篇文章系转载及整理,原文链接如下:http://www.cnblogs.com/panfeng412/archive/2011/11/06/2237857.htmlhttps://zhuanlan.zhihu.com/p/37571803 1. 段错误是什么...转载 2018-07-20 17:17:33 · 860 阅读 · 0 评论 -
C语言中的结构联合(大端小端)
结构和联合是程序员自己定义的数据类型。结构: 什么是结构:是一种由程序员自定义的数据类型。 为了全面的描述一个物体的各项数据,由不同数据类型组成的一种新的数据类型。 定义结构: struct struct_name { 成员类型 成员名; 成员类型 成员名; ... }; //分...原创 2018-07-04 23:23:37 · 565 阅读 · 0 评论 -
多文件编译的makefile编写(附当前目录下所有.c/.cpp文件编译makefile)
C代码是如何变成可以执行程序的过程: 1、由预处理器把程序员所编写的C代码翻译成标准C代码,可以得到以.i结尾的预处理文件。 gcc -E code.c gcc -E code.c -o code.i 2、由汇编器把标准的C代码生成汇编代码,可以得到以.s结尾的汇编文件。 gcc -S code.i 3、由翻译器把汇编文件...原创 2018-07-01 22:20:16 · 4958 阅读 · 1 评论 -
C语言指针( 函数指针,数组指针)
指针 指针是一种数据类型,通过它可以定义一个指针变量,变量里存的是地址,通过这个地址就可以找到所需的变量单元。但注意,指针本身也是数据,所以这意味着它也有属于自己的地址。 为什么要使用指针: 1)函数之间的命名空间互相独立,但函数之间的存储空间是统一的,使用指针可以做到跨函数共享变量 。(全局变量不宜多用,它可以被所有函数访问,可能会被其他函数无意间修改,且在程序运行期间一直占...原创 2018-06-02 00:53:09 · 436 阅读 · 0 评论 -
C语言之程序在内存中的分布以及内存越界问题
C语言程序在内存中的分布: bss段:该段用来存放没有被初始化或者初始化为0的全局变量,以及被static修饰的未初始化的局部变量。在程序运行的整个生命周期内都存在于内存中。这个段中的变量只占用程序运行时的内存空间,而不占用程序文件的储存空间。 举个例子:定义一个1MB的未初始化的全局变量 (char类型只占一个字节 定义1024*1024个char类型说明有1MB)#in...原创 2018-05-31 16:18:17 · 1561 阅读 · 0 评论 -
C语言之函数(作业:杨辉三角形)
函数在我看来就是代码的最小单位,每调用一个函数就相当于实现一个功能。函数的分类主要有:1)标准库函数:由C语言标准委员会制定编写的 使用C语言的人都能调用的2)第三方函数:别人写好封装后 可以使用的3)系统函数:操作系统提供的一些功能接口、内存管理、文件读写,进程通信等4)自定义函数:程序员自己根据需求编写的函数 定义函数的格式: 返回值类型 函数名(参数类型 参数列表);...原创 2018-05-30 21:38:23 · 7520 阅读 · 1 评论 -
C语言 循环'*'显示实心空心菱形
最近刚刚把C语言又重新学了一遍,真的是要好好整理下学过的内容,不然总是容易在写代码的时候犯错。因此想要将一些自己在编写过程中的体会和感悟都记录下来,以后也方便重温。 好了,废话不多说,当我们把C语言最基础的分支、循环都学习完后,就可以开始描绘简易的图形,本文主要描述两种图形,如下: ...原创 2018-05-02 20:38:25 · 2570 阅读 · 1 评论 -
C语言数组(习题:大数相加)
数组:实际上是一种批量定义变量的方法 定义:类型+数组名[数量] 比如 int num[20]; 初始化:数组的初始化还是蛮重要的,如果不进行初始化的话数组中的内容将会是随机值 int num[5] = {1,2,3,4,5,6,7};这样初始化会出现警告 最后只会显示前五个元素 int num[5] = {1,2}这样初始化会在最后自动补0由...原创 2018-05-30 20:39:07 · 4208 阅读 · 2 评论 -
字符与字符串
鸽了有那么几天,一边是要期末复习了,一边这段时间身体也不是很好老是跑医院(身体健康最重要!)今天整理一下字符,和字符串。字符: 首先提一下字节。字节就是byte。是计算机用于计量存储容量的一种计量单位。数据存储是以“字节”(Byte)为单位,数据传输大多是以"位"(bit,又名“比特”)为单位,一个位就代表一个0或1(即二进制),每8个位(bit,简写为b)组成一个字节(B...原创 2018-06-12 22:43:06 · 292 阅读 · 0 评论 -
C语言指针(函数指针数组,二级指针)
int (*p[num])( char*,int,int );int (*(*p)[num])(int a); 上一篇博客最后的两个例子的答案分别是:函数指针数组,函数指针数组的指针。函数指针数组指针和前面的数组指针其实没有太大区别。然后今天主要理一下函数指针数组和二级指针。函数指针数组函数指针数组中,存放的一定要是相同返回值类型,以及相同参数列表的函数指针,这样数组可...原创 2018-06-02 17:01:13 · 2248 阅读 · 0 评论