快捷导航

为什么会有这种情况?


我想了解的是为什么指针指向常量的地址,输出值时,地址是常量的地址,结果却不一样,我知道常量不能修改,但是为什么会有这种情况?谢谢大家。
#include main(){    const int il=80;    int *pi;    pi= (int *) &il;    * pi=20;    printf("%d+pi\n",*pi);    //pi所指向地址上的值    printf("%s+pi\n",pi);    //pi指针所指向地址    printf("%d+il\n",il);    //il的值    printf("%s+il\n",&il);    //il的地址    getchar();}

免责声明:本内容仅代表回答者见解不代表本站观点,请谨慎对待。

版权声明:作者保留权利,不代表本站立场。

回复

使用道具 举报

参与会员1

所谓的常量不能修改,是指c语言的语法层面,实际上程序在内存中的数据都可以被修改,辅助就是这么干的。常量限定,仅仅存在于编译阶段检测,通过指针修改常量,属于未定义行为,成功与否,取决于你使用的编译器。
回复

使用道具 举报

可能感兴趣的问答

发新帖
  • 微信访问
  • 手机APP