- 在C中,注释常用的方法是/* statements */,注释之间不能嵌套
- 在1中的注释最好用来写评论,如果要注释掉代码,最好用#if指令
#if 0 some statements #endif
- 数组作为参数的时候传递的是数组首地址,也就是实参和形参共享一个地址,数组的下标量做参数时,情况和普通变量一样,这个时候形参和实参各自有各自的内存空间,互不干扰。
- C中只有4种基本类型,整型,浮点,指针,聚合;每个类型应该考虑它的三个属性:作用域,链接属性(extern static interal)和存储类型
- 多字节字符常量因为在不同的环境下,解读方法会有不同,所以不推荐使用
char a;
a='\((?'; /*不同环境会对a有不同解释*/
- 在代码块内部声明的变量,如果给它加上static,可以使它的存储类型从自动变为静态,具有静态存储类型的变量在整个程序执行过程中一直存在。但是并没有改变它的作用域,仍旧只能从函数内部访问。
- C 对某一位进行操作
value=value|1<<2 把value的倒数第三位置1
value=value&~(1<<2) 把value的倒数第三位置0
if(value&1<<2) 如果value的第三位是1,则返回真
-------------------------------------------------------指针---------------------------------------------------------------------
int *p;
*p=12;
上面这一段的想法是定义了一个指向int的指针,并把12存储到p所指向的内存位置
然而这是非法的,因为此时p未被初始化,它指向一个不知名的地方...把12存储到这个位置非常危险
在对任何指针进行间接访问之前必须判断是否是NULL
数组名不可以进行++或者--操作,指向数组的指针可以自增或者自减操作。
结构自引用:
struct self_ref1
{
int a;
int b;
struct self_ref ref;
};
struct self_ref2
{
int a;
int b;
self_ref2* ref;
};
self_ref1的声明是错误的,self_ref2的声明是正确的。关键就在于成员ref,在self_ref1中ref成员是结构,会出现递归导致编译器不知道结构到底是多大。