读书人

typedef的有关问题

发布时间: 2013-09-08 15:21:21 作者: rapoo

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类型的”

读书人网 >C++

热点推荐