
--C语言专区
文章平均质量分 50
Think_Idea
水滴石穿
展开
-
auto变量在for循环中的生存周期
for(i = 0; i < 4; ++i){ int x;}对于上面代码,x的生存周期是一次循环还是整个循环呢?我们通过打印发现x的地址在每次循环中地址不变,所以x的生存周期是在整个for循环,为了进一步验证,我们使用gdb追踪一下修改代码如下:for(i = 0; i < 4; ++i){ int x =0; x++;原创 2015-11-08 09:05:51 · 1077 阅读 · 0 评论 -
内存对齐问题
结构体字节对齐 在用sizeof运算符求算某结构体所占空间时,并不是简单地将结构体中所有元素各自占的空间相加,这里涉及到内存字节对齐的问题。从理论上讲,对于任何 变量的访问都可以从任何地址开始访问,但是事实上不是如此,实际上访问特定类型的变量只能在特定的地址访问,这就需要各个变量在空间上按一定的规则排列, 而不是简单地顺序排列,这就是内存对齐。 内存对齐的原因:转载 2015-11-06 23:40:37 · 338 阅读 · 0 评论 -
浅谈char **p与const char **p赋值问题
前段时间闲来无事就翻看了一下C专家编程,在第一章1.9 阅读ANSI C标准,寻找乐趣和裨益中作者给出了下面代码:foo(const char **p) { }main(int argc, char **argv){ foo(argv);}上面代码在编译时会发出警告:argument is incompatible with prototype(参数与原型不匹配)原创 2015-11-05 20:17:18 · 3073 阅读 · 0 评论 -
浅谈 二维数组、指针数组、数组指针、二级指针的区别
声明:6行5列二维数组:char ary[6][5];指针数组:char *ary[6];//(char *) ary[5];数组指针:char (*ary)[5];二级指针:char **ary;内存布局:ary[i][j]取下标,上述4中变量在c中的代码一样:*(*(ary + i) + j)但其内部寻址方式是不同的1、二维数组: *(*(ary +原创 2015-11-02 00:13:39 · 658 阅读 · 0 评论 -
声明与定义的区别
声明(declaration )指定了一个变量的标识符,用来描述变量的类型,是类型还是对象,或者函数等。声明,用于编译器(compiler)识别变量名所引用的实体。以下这些就是声明:extern int bar;extern int g(int, int);double f(int, double); // 对于函数声明,extern关键字是可以省略的。class foo; //转载 2015-10-27 21:35:12 · 350 阅读 · 0 评论 -
C语言关键字解析
ANSI标准定义的C语言关键字共32个1、数据类型关键字基本数据类型:void char int float double 类型修饰关键字 short long signed unsigned 复杂类型 struct union enum typedef sizeof存储级别关键字:auto static register extern const volatile原创 2015-10-27 21:26:02 · 1030 阅读 · 0 评论 -
C语言视频学习网站
1、点击打开链接:linux C语言系统开发过程:个人感觉讲解比较好,建议初学者(可能难度稍微大点)和有一定C基础的人学习原创 2015-10-16 21:11:06 · 583 阅读 · 0 评论 -
C语言书写规范
写程序就像写文章,怎么样才可以让你的程序更受"芯片们"的欢迎!语言代码书写规范总则 常量、变量、函数名的定义可以采用英文单词或中文全拼表示,尽量采用采用英文单词或全部中文全拼表示,若出现英文单词和中文混合定义时,使用连字符“_”将英文与中文割开。 for语句的循环指针可以采用I,j,t等单个字母变量定义; 常量定义 规范转载 2015-10-14 21:04:58 · 789 阅读 · 0 评论