无意间看待同学的一篇关于const究竟修饰了谁的文章,里面有一些关于typedef的用法,现在贴出源代码

#include<stdio.h>

typedef int* IntPointer;

int main()
{
 int value=10;
 const int *pA=&value;
 pA++;
     //*pA=11;编译错误
 const IntPointer pB=&value; 
 *pB=12;
 //pB++;//编译错误
 return 0;
}

 

*pA=11编译错误很容易理解,因为const修饰使得内存值为只读,就是指向一个常量。

pB++编译错误,却很难理解,因为此时IntPointer就相当于int *,那么根据定义pB只是一个普通指针,不是常量指针,那么为什么不能pB++呢?

原因在于const Intpointer pB其实不相当于const int *pB,它其实和const int pB没什么区别,

只不过此处变量p2的数据类型是我们自己定义的而不是系统固有类型而已,因此const IntPointer pB的含义是:限制数据类型为int *的变量pB为只读,所以pB++错误.

转载于:https://www.cnblogs.com/fightingxu/archive/2012/12/07/2807242.html

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐