分类: C/C++
2010-06-28 10:56:59
1、 C语言中的数据类型的取值范围取决于具体的机器:
一般,char – 1字节,short – 2字节,int – 2或4字节,float – 4字节,long/double – 8字节;
而Java中,char – 2字节,byte – 1字节,int – 4字节,float – 4字节,long/double – 8字节。
2、 C语言中所有函数参数都是“通过值”传递的。
3、 从技术角度看,地址就是指向变量的指针。
4、 定义表示创建变量并分配存储空间;声明只是说明变量的性质,并不分配空间。
5、 ‘"0’表示值为0的字符, 即空字符null。
6、 常量表达式是仅仅包含常量的表达式,在编译期求值,而非在运行时。
7、 从技术角度看,字符串常量就是字符数组。
8、 C语言没有指定同一运算符中多个操作数的计算顺序(&&,||,?,:除外),也没有指定函数中各参数的求值顺序。
9、 静态外部变量/函 数,其后声明的对象作用域限定为被编译文件的剩余部分;静态内部变量,不管其所在函数是否被调用,它一直存在,占据存储空间。
10、register声明告诉编译期,变量放在寄存器中,只适用于自动变量(内部变量)以及函数的形式参数;寄存器变量无 论实际上是否存放在寄存器中,它的地址都是不可访问的。
11、不显示进行初始化时,外部变量和静态变量都将被初始化为0,而自动变量和寄存器变量初值无定义;外部/静态变量的初始化表达式必须是常量表达式,且只初始化一次;自动/寄存器变量每次进入函数或程序时都将被初始化。
12、指针的本质是存储地址值的变量。
13、把数组传递给一个函数时,实际上传递的是该数组的第一个元素的地址。函数定 义中,形参char s[]与char * s是等价的,实参却有很大的差别。
14、0永远不是有效的数据地址,故可返回0表示异常。
15、进出栈的标准用法:*p++=val;/val进栈/ val=*--p;/出栈/。
16、指针数组最频繁的用处是存放不同长度的字符串,如char * name[]={“Jan”,”Feb”,”Mar”}。
17、结构的合法操作 a)整体复制和赋值;b)&操作;c)访问其 成员。
18、结构类型的参数和其它类型的参数一样,都是通过值传递的。
19、所有运算符中,·,à,( ),[ ]这些运算优先级最高。
20、结构的长度未必等于各成员之和,因为不同对象有不同的对齐要求,结构中可能 会出现未命名的“空穴”(hole)。
21、一个包含其自身实例的结构是非法的,但是可以包含指向结构的指针。
22、union:一个变量可以合法地保存多种数据类型中任一种类型的对象;联合允许的操作与结构相同,且只能用其第 一个成员类型的值进行初始化。