typedef的问题
#include <iostream>
using namespace std;
typedef int* INT2;
int main()
{
int a=1;
int b=2;
int c=3;
const int* p1 = &a;
//*p1 = 9; //不能通过p1改变a的值
const INT2 p3=&b;
*p3 = 9; //可以通过p3改变b的值
p3 = &a; //不能改变p3指向
INT2 const p4=&c;
//p4 = &a; // 不能改变p4指针指向
cin.get();
}
p1和p3差了一个typedef,为什么行为完全不一样了?
编译环境是devC++和win7 64位。
[解决办法]
首先要说C++ primer与plus 不是一本书,关于这个const与typedef的组合使用也是在c++ primer第三版见到过,第四版就不知道去哪儿了,跟1l说的那样,typedef与define不同,不是直接替换文本,而是类型定义,INT2的这个类型是你定义的一个独立类型,是int类型的指针,const是修饰INT2的,而INT2说白了是个指针类型,所以是const的指针,而不是指向const的,这个比较饶,好好体会一下不难理解
[解决办法]
const int *可以理解为“一个指向const int的指针”
const INT2 则只能理解为“一个const的INT2”也就是“一个指向int的指针,该指针是const类型的”