最近重新学习c++的一些知识点。
typedef
与#define对比来说
typedef是定义了一种新的类型,#define只是简单的替换
typedef char * CHAR_POINTER 就是把char *整体定义成了一种类型
具体操作
typedef char * CHAR_POINTER;
CHAR_POINTER p1,p2;
等同于
char*p1,*p2;
上面CHAR_POINTER p1,p2;一句就和int a,b;的作用相似,作为一个整体出现,不会再受指针语法的约束了
第二个比较容易混淆的例子
1.typedef char * pStr;
2.char string[4] = "abc";
3.const char *p1 = string;
4.const pStr p2 = string;
5.p1++;
6.p2++;
上面的例子里面
第三行 const 是修饰的char,所以p1指针可以改变指向的位置,但是不能修改指向的值。
第四行 const 是修饰的char *整体,所以p2指针是一个const指针,不可以改变指向的位置,p2++也就不正确。
使用typedef第二个知识点就是用来简化声明,使声明更加易懂。
详见http://www.cnblogs.com/csyisong/archive/2009/01/09/1372363.html