为了账号安全,请及时绑定邮箱和手机立即绑定

为什么会有这种情况?

为什么会有这种情况?

C
丶低调丶 2017-12-06 22:36:58
我想了解的是为什么指针指向常量的地址,输出值时,地址是常量的地址,结果却不一样,我知道常量不能修改,但是为什么会有这种情况?谢谢大家。 #include<stdio.h>  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 回答

?
anet

TA贡献79条经验 获得超19个赞

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

查看完整回答
1 反对 回复 2017-12-07
  • 丶低调丶
    丶低调丶
    好的,还有一个问题,既然已经修改,指向这个地址的指针所输出的值和这个地址的值为什么不同?
  • 丶低调丶
    丶低调丶
    修改了之后,&il是等于pi的,但*pi却不等于il;
  • 1 回答
  • 0 关注
  • 1085 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信