C++ typedef与#define
一、define
#define说白了就是一个文本替换工具,是预处理器完成的,就是在预处理的时候把一段文本换成另一段文本。
举个例子:
#define NUM 999
这里就定义了一个NUM,NUM就是999;当你使用它时,如if(i<NUM){};编译器在处理这个代码之前,预处理器已经把NUM替换成了999,所以上面代码就相当于if(i<999){}。如果这个NUM用的地方比较多,还经常需要修改,那么#define就比较方便了。当然你也可以使用int类型的变量实现上面的功能,但是这样会限定类型。
二、typedef
任何声明变量的语句前面加上typedef之后,原来是变量的都变成一种类型。不管这个声明中的标识符号出现在中间还是最后。
例:
复杂一些的就需要“左右法则”了
分析一下定义:int (*arr[10]) (int);
找到变量名arr,先往右是[]运算符,说明arr是一个数组;再往左是一个*号,说明arr数组的元素是指针(注意:这里的*修饰的不是arr,而是arr[10]。原因是[]运算符的优先级比*要高,arr先与[]结合。);跳出圆括号,先往右又遇到圆括号,说明arr数组的元素是指向函数的指针,它指向的函数有一个int类型的参数,返回值类型是int。
当然还有更复杂的,只要你把他拆解开,一个个分析,也就没什么难的了!