const的指针的使用

声明说明符号的顺序是不重要的,事实的标准顺序是:首先连接说明符,然后是类型限定符。如:

extern const int size=1024;//这是最正常的const使用

1)const  int* ptr=&size;

估计你第一时间就认为是指向整数的常量指针吧。其实这是指向常整数的指针,即指针可以修改,但指针指向的内容不能修改。


2)int * const* ptr;

这是个指向整数指针的指针,指向整数的常量指针的指针,即整数可以改变,但是指向整数的指针是常量的,指向整数指针的指针却也可以改变。


3)const int **ptr;

那这个呢?这是一个指向常整数的指针的指针,即整数不能修改,整数的指针和指针的指针可以修改。不过在vc很奇怪的,必须要以一个const**才能赋予ptr值,而其他都不用,不过按照编译器指示就通过编译就行了。如:

int a=10;

const  int *b=(&a);

const int **ptr=&b;


4)const int * const* ptr;

这又是什么怪物呢?这是指向常量整数的常量指针的指针,就是说无论整数和指向整数的指针都是不可变的。

 

可能很多情况之下不需要那么执着这个关键字,不过某些公司招聘就喜欢出一些刁难的题,所以特意研究这个关键字,比较笨,花了一个小时才终于悟出了其道理。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值