打印

关于typedef问题

[复制链接]
665|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gxgclg|  楼主 | 2013-8-30 18:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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位。

相关帖子

沙发
pkat| | 2013-8-30 18:59 | 只看该作者
typedef 定义了类型的别名,跟#define不一样。
很明显const int* p1 = &a; const限定的是*p1,即限定的是指针p1指向的内存变量为const。
const INT2 p3=&b; const限定的是p3指针是个指针常量。不能指向别的地址

使用特权

评论回复
板凳
火箭球迷| | 2013-8-30 19:02 | 只看该作者
这个在第三版的C++ Primer中有详细的解释,const与typedef的结合使用,从右往左读
第一种类型 const int * 首先是一个指针,指向的是一个const的int数值
第二种因为typedef的结合,首先是一个指向int的指针,这个指针是const的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

177

主题

1653

帖子

1

粉丝