无意间看待同学的一篇关于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++错误.
所有评论(0)