C语言学习笔记9

宏定义:

#define 名字 替换文本

较长的宏定义可以分多行,这时需要在待续的行末尾加上一个反斜杠\。

宏定义也可以带参数:

#define max(A, B) ((A)>(B)?(A):())

使用宏时需要注意参数表达式的副作用影响。

可以通过#undef指令取消名字的宏定义。

 

条件包含:

为保证引用的文件只被包含一次,可以使用:

#if !defined(HDR)

#define HDR

/*将文件包含于此*/

#endif

 

指针是能够存放一个地址的一组存储单元。

一元运算符&可以用于取一个对象的地址。地址运算符&只能应用于内存中的对象,即变量与数组元素。它不能作用于表达式、常量或register类型的变量。

一元运算符*是间接寻址或间接引用运算符。

每个指针都必需指向某种特定的数据类型。

语句(*ip)++中的圆括号是必需的。

在函数调用时,由于参数传递是采用传值方式,因此在函数内部不能映像参数的实际值。如果要达到直接修改参数值的目的,需要传递参数的地址的方式。

 

对于数组而言:

Int a[10];

Int *pa;

Pa = &a[0];

则可以将指针pa指向数组a的第0个元素。

Pa = &a[0]的作用与pa = a是相同的,因为数组名所代表的即是数组最开始元素的地址。

但pa指针是变量,可以进行赋值等操作,但a数组名不是变量,只能进行算数运算,而不能进行赋值等操作。

posted @ 2010-04-10 15:05  lcymail  阅读(157)  评论(0编辑  收藏  举报