我读了很多老问题,很多关于一个声明中const
个关键字的答案,以深入理解声明的语法.
我玩了const
,现在我有点困惑于这个例子:
int i;
i=1;
int const *ptr_i;
ptr_i=&i;
printf("%d\n",*ptr_i);
i=2;
printf("%d\n",*ptr_i);
如果int const *
是指向constant integer的指针,为什么允许ptr_i=&i;
?i
不是常数整数.
此外,如果i
的值从1变为2(显然,这是可能的,因为i
不是一个常数整数),第二个printf
显示2.我并不感到惊讶,因为i
的值已经改变,而ptr_i
是指向i
的指针.
我还判断了ptr_i的值没有改变(printf("%p ",ptr_i)
).
我的误解在哪里?