C和指针这本经典著作,最近开始学习,然后想与大家共享下,希望共同进步!网络的力量是强大的,会碰撞出思想的火花来!
第一章 快速上手
1、要从逻辑上删除一段C代码,更好的办法是使用#if指令:
#if 0
statements
#endif
在 #if 和 #endif之间的程序段就可以有效地从程序中去除,即使这段代码之间原先存在注释也无妨
2、关于scanf返回值的问题
scanf函数,与printf函数一样,都被定义在stdio.h里,因此在使用scanf函数时要加上#include<stdio.h>。它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中,其关键字最末一个字母f即为“格式”(format)之意。
scanf()函数返回成功赋值的数据项数,读到文件末尾出错时则返回EOF。
3、当数组名作为实参时,传给函数的实际上是一个指向数组起始位置的指针,也就是数组在内存中的地址。
4、为什么ch被声明为整型,但是又用来读取字符的原因?
例如:
int ch;
while( (ch = getchar()) != EOF && ch != '\n');
EOF是一个整型值,它的位数比字符类型要多,把ch声明为整型可以防止从输入读取的字符意外地被解释为EOF。但同时,这也意味着接收字符的ch必须足够大,足以容纳EOF,这就是ch使用整型值的原因。尽管char类型变量的目的是为了让它们容纳字符型的值,但字符在本质上是小整型值
5、数组做参数的时候是以引用的方式传递的,即地址传递。而标量和常量都是传值调用,被调用的函数无法修改调用函数以传值形式传递给它的参数,然而当被调用函数修改数组参数的其中一个元素时,调用函数所传递的数组就会被实际修改。
当数组名作为实参时,传给函数的实际上是一个指向数组起始位置的指针,也就是数组在内存中的地址。正因为实际传递的