- 博客(10)
- 资源 (10)
- 收藏
- 关注
转载 结构体的内存对齐
结构体的内存布局依赖于CPU、操作系统、编译器及编译时的对齐选项。结构体内部成员的对齐要求,结构体本身的对齐要求。最重要的有三点(一)成员对齐。对于结构体内部成员,通常会有这样的规定:各成员变量存放的起始地址相对于结构的起始地址的偏移量必须为该变量的类型所占用的字节数的倍数。但是也可以看到,有时候某些字段如果严格按照大小紧密排列,根本无法达到这样的目的,因此有时候必须进行padding。各成员
2013-06-30 17:41:53 681
原创 与零值比较
当通过用if(值 0)进行比较的时候 ,要看这个值是什么类型的 具体如下:1. 当值为 int, char型的时候 应用 if(int_val == 0)或者 if(int_val != 0) 2. 当值为指针变量的时候 应用if(NULL == p)或者if(NULL != p) 注:NULL最好写在左边 因为如果在右边的话容易写成 p=NULL 编译不会错 但在
2013-06-28 21:20:05 739
原创 定义与声明的区别
所谓的定义是指编译器创建了一个对象并为这个对象开辟一块内存,是从无到有的过程,而声明只是告诉编译器有这个东西存在了,这个变量名或者函数名已经被预定了,举个例子 : 1.void test(int a) { ............. ................ } 2. void test(int);第一
2013-06-28 19:36:52 639
原创 编译与链接
当我们编写好源文件后(.c)经过编译器生成目标文件(.obj) 最后通过链接器将编好的目标代码同启动代码,库代码一起再生成一可执行文件(.exe) 所谓的启动代码是程序与操作系统之间的接口,库代码就是你的源程序里所include的那些库函数(如printf)
2013-06-28 16:47:40 640
转载 数组指针和指针数组的区别
数组指针和指针数组的区别数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元
2013-06-28 09:55:48 726
原创 学习笔记_C语言
1. for( ; 1 ; ) 等价于 while(1)2. 程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于( 堆)中。3. 局部变量能否和全局变量重名? 能,局部会屏蔽全局。要用全局变量,需要使用"::"4. 对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现? c用
2013-06-27 18:45:06 714
转载 C语言中的typedef
Typedef 在C语言中频繁用以声明一个已经存在的数据类型的同义字。也可以用预处理器做类似的事。#define dPS struct s *typedef struct s * tPS;以上两种情况的意图都是要定义dPS 和 tPS 作为一个指向结构s指针。哪种方法更好呢?答案是:typedef更好dPS p1,p2;tPS p3,p4;第一个扩展为
2013-06-26 16:07:15 1105
转载 C语言中的volatile
推荐一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。volatile应该解释为“直接存取原始内存地址”比较合适,“易变的”这种解释简直有点误导人;下面的函数被用来计算某个整数的平方,它能实现预期设计目标吗?如果不能,试回答存在什
2013-06-26 15:29:55 653
转载 C中的const
1、什么是const? 常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。(当然,我们可以偷梁换柱进行更新:)2、为什么引入const? const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。3、cons有什么主要的作用? (1)可以定义const常量,具有不可变性。 例如:const int
2013-06-25 23:07:58 669
原创 预处理器标识#error的目的是什么?
由于是第一次用博客,先试一试.....................回到原问题 预处理器标识#error的目的是什么?编译程序时,只要遇到 #error 就会跳出一个编译错误,既然是编译错误,要它干嘛呢?其目的就是保证程序是按照你所设想的那样进行编译的。下面举个例子:程序中往往有很多的预处理指令#ifdef XXX.........#else...
2013-06-24 21:13:23 2677
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人