C语言的一点学习积累



掌叔
2008-06-16 09:00:01

摘自:etual.cublog.cn

成长的过程,以前参透这些东西的时候记下的笔记,个人感觉还是挺实用的。

1 第一个 /* 和第一个 */ 的注释是以这两个标志为开始和结束,而不管中间有多少个符号。
所以如果一段程序屏蔽的话,原来有注释的话,这样做可以不行,办法是
#if 0
statement
#endif
2 直接在字符数组赋值的过程中转义。但是占用的字符数还是算进去的。
char ch[]="qBASIC
dBASIC";
printf("%d
",sizeof(ch)); 占14个字符

3 定义常量
const int
int const 等价
指针的情况还有另外一种情况
int const *p ; 声明 *p 是不能修改的,也就是说改变变量的 *p =1 ; 操作违法
int * const p; 声明 p 是不能修改的常量,也就是说改变指针的 p=&i 操作是违法的

4 typdefe 和 #define的区别
看一个例子:
typedef int *pchar;
pchar a,b; 声明了两个int形的指针变量 a ,b
#define pchar int *
pchar a,b;
替换之后编程 int *a,b ;
这个就跟之前不同了,b单纯是一个变量,而不是一个指针。

5 定义一个指针 int *p
占有空间,但是并不指向任何确定的寄存器,这个时候用指针的话,是非常危险的。
int *p;

*p=5;
非常典型,没有初始化指针就拿来用,绝对不允许这样做。

而且,p如果是 auto 类型的话,那可以指向内存任何区域,所以
千万切记,定义指针之后,一定要初始化
NULL 指针的问题,每次都指向NULL 并不是一个好办法,最好的程序,是用指针之前进行NULL检查
这样可以避免很多错误。