1.调用函数时,和被调用函数之间的变量传递
被调用函数接收的是变量的私有的临时拷贝,被调用函数不能影响调用者的原变量。但是,如果数组名出现在函数的参数中,那是将数组的起始地址传给参数的,于是被调用函数可以改变数组元素的值,这就是说数组是传地址的。
2.常用的头文件
使用printf要包含stdio.h。
使用strlen等要包含string.h。
使用atof要包含stdlib.h。若只包含math.h,gcc编译通过,但atof的返回值是个奇怪的数字。
3.数组的初始化、求长度
不定长的数组一旦定义就得立即初始化;定长数组的初始化,可以在定义时,也可以随后。
char类数组用sizeof求长度,strlen求实际长度。
其他类型的数组:sizeof(array)/sizeof(unit)求长度。由于在存储时没有结束符号,导致无法直接计算实际元素个数。在申请数组时,分配的空间段有结束标志,所以数组的大小是容易得到的,但仅仅是标志,如果操作越界,不会报错。
4.函数的返回值
隐含约定一函数,若未说明它的类型则它回送整型值。
5.寄存器变量
一个变量被说明为寄存器(register),即是告知编译程序该变量经常用到。只要有可能,寄存器变量就被放在机器的寄存器内,它能产生更小更快的程序。
是实际应用中,寄存器变量受某些约束以反映硬件的实际情况。在每个函数中,只能有很少几个变量可以放在寄存器内,而且仅有某些类型的变量可以是寄存器变量。
6.重复赋值
如果变量(如char、int类型)重复赋值,可以通过gcc编译,以最后一次赋值为准。
7.预处理
在双引号括起来的字符串中的名字是不会被取代的。
如#define YES 1,printf("YES")的执行结果是YES。
8.取指针
运算符&只能作用于变量和数组的元素。&(x+1)和&3、取寄存器变量的地址,都是非法的。
9.指向字符串的指针
char *p , p = "hello",这样使用是没问题的。不为字符串分配空间的缺点在于:不能改变字符串的内容。
10.指针的大小
sizeof(指针)=4;当指针是数组首指针时除外(是数组大小)。
1684

被折叠的 条评论
为什么被折叠?



