摘要: 在emacs编程中有以下需求 从调用一个函数的地方跳转到函数的定义的地方 或是反过来从函数定义的地方列出所有调用这个函数的地方 实现办法 需要安装以下软件 gnu global(阅读源代码的工具)官网 emacs的gtags插件 启动emacs后,输入下面的命令,来启动gtags的功能 M-x gg 阅读全文
posted @ 2018-06-20 16:21 小石王 阅读(1124) 评论(0) 推荐(0) 编辑
摘要: 柔性数组成员 定义和声明分离 结构体里有指向字符串指针 结构体里如果有指向字符串指针,就会发生字符串在结构体的外面,不能由结构体来统一管理。 解决办法: 上面的代码有个弊端,就是访问那个str时,需要使用不容易理解的tp+1,改进如下。 为什么,虽然没有对t.pc赋值,但是打印出了正确的数据呢? 方 阅读全文
posted @ 2018-06-19 17:21 小石王 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 柔性数组成员 定义和声明分离 结构体里有指向字符串指针 结构体里如果有指向字符串指针,就会发生字符串在结构体的外面,不能有结构体来统一管理。 解决办法: 上面的代码有个弊端,就是访问哪个str时,需要使用不容易理解的tp+1,改进如下。 为什么,虽然没有对t.pc赋值,但是打印出了正确的数据呢? 方 阅读全文
posted @ 2018-06-15 18:43 小石王 阅读(739) 评论(0) 推荐(0) 编辑
摘要: c 字节对齐 概念: 结构体里会包括各种类型的成员,比如int char long等等,它们要占用的空间不同,系统为一个结构体开辟内存空间时,会有2种选择。 第一种:节省空间的方案,以上面的列子来说的话,就是4(int) + 1(char) + 8(long) =13个字节; 第二种:浪费空间的方案 阅读全文
posted @ 2018-06-15 16:13 小石王 阅读(936) 评论(0) 推荐(0) 编辑
摘要: memset memcmp memcpy memmove 自己实现 memset c include include include include void my_memcpy(void dest, const void src, size_t cnt){ assert(NULL != dest 阅读全文
posted @ 2018-06-14 22:46 小石王 阅读(423) 评论(0) 推荐(0) 编辑
摘要: strlen strcat strcpy strcmp 自己实现 strlen strcat strcpy strcmp c include include include include int my_strcmp(const char s1, const char s2){ assert(NUL 阅读全文
posted @ 2018-06-12 22:54 小石王 阅读(433) 评论(0) 推荐(0) 编辑
摘要: 用双引号定义并且声明的时候明确指定数组大小的话,sizeof就会返回指定的大小,不会自动加1; 用大括号定义并且声明的时候明确指定数组大小的话,sizeof就会返回指定的大小,不会自动加1; 用双引号定义并且声明的时候没有明确指定数组大小的话,sizeof就会是实际的大小+1;strlen也正常 用 阅读全文
posted @ 2018-06-12 17:17 小石王 阅读(330) 评论(0) 推荐(1) 编辑
摘要: ```c include include void fun(int a){ printf("fun:%d\n", a); } void fun1(void ( f)(int),int a){ f(a); } int gun(int a){ printf("gun:%d\n", a); } int g 阅读全文
posted @ 2018-06-12 14:28 小石王 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 函数指针的返回值是指针数组,数组里放的是int 函数指针的返回值是指针数组,数组里放的是int指针 c include include void fun(int a){ printf("fun:%d\n", a); } void fun1(void ( f)(int),int a){ f(a); } 阅读全文
posted @ 2018-06-11 22:44 小石王 阅读(467) 评论(0) 推荐(0) 编辑
摘要: 函数指针,函数的返回值是数组 上面的代码是声明一个函数指针,这个函数有2个int指针参数,返回值是指针,指向的是数组,数组里放的是int指针。但是,实际用代码验证一下,并不是想象的那样。 结论:只要参数一样,返回值不管是int指针数组,int数组,还是int,编译都会通过,执行没有问题。但是编译时有 阅读全文
posted @ 2018-06-11 18:02 小石王 阅读(282) 评论(0) 推荐(0) 编辑