这次回顾主要针对C中关键的部分:数组和指针以及函数的内容,当然只涉及了一点,其他有待继续:
如果scanf()在尝试转换一个数值前遇到了问题(比如检测到文件尾部或者遇到一个硬件问题)它就会返回一个特殊值EOF,这个值一般被定义为-1;
在while(goast != 0)和while(goast)选择后者更加自然,也是大部分程序猿选择的方式;
使用5 == value;更有助于检查出来 = 和 == 的错误;
数组若是未进行初始化,则自动初始化各个元素为0;C99还支持这样的部分初始化方法:int array[6] = { [5] = 212 };
C不会做数组的越界检查,这是出于C信任程序猿的原则,因此程序猿自身要做到合理的使用数组,注意边界问题;
C99引入了变长数组(Variable-length arry, VLA),主要是为了使C更适用于数值计算,但是VLA存在某些限制:例如声明时不能进行初始化。
函数原型声明的重要性,不使用参数:void imax(void);不确定的参数:int printf( char *,...);
在递归与循环都可以实现的时候,尽量使用循环,因为循环占用的内存更少;
递归的优缺点,优点:对于某些问题提供了便利的解决方案;缺点:很快会消耗掉计算机资源;
声明一个变量为指针式不够的,还要说明指针所指向的数据的类型:比如:
int * pi; //pi是一个指向整型变量的指针
char * pc; //pc是一个指向字符型变量的指针
*和指针名之间的空格不是必须的,通常在声明中使用空格,而在指向变量时将其省略;
但是考虑上述中pi,pc本身是什么类型呢?在大多数系统中,指针变量本身是无符号整型数据,但是他不可以像整型数据那样进行操作,(如果要进行地址输出,使用%p格式,按照16进制进行输出);