首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

typedef的有关问题

2013-09-08 
typedef的问题#include iostreamusing namespace stdtypedef int* INT2int main(){int a1int b2in

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

热点排行