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数组名不是变量,只能进行算数运算,而不能进行赋值等操作。