鱼C论坛

 找回密码
 立即注册
查看: 1002|回复: 2

[已解决]const问题,很短,为啥通过指针仍然无法修改const定义的变量

[复制链接]
发表于 2021-10-19 20:42:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
int main()
{
        //局部的只读变量,可以通过指针来进行修改的
        //如果是const在主函数外定义的全局变量,,即即使通过指针也不能修改这个值
        const int data = 100;  
        printf("%d\n",data);

        int* p = (int *)&data;  //(int *)强制类型转换,data的类型是const int,强制转换成int 
        *p = 2000;
        printf("%d\n", data);
        return 0;
}
最佳答案
2021-10-19 20:50:48
本帖最后由 jackz007 于 2021-10-19 20:51 编辑

        const 关键字定义的是常量,也就是立即数,常量的值在程序编译时就已经确定,不占用变量空间,不可以在运行时被赋值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-19 20:50:48 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2021-10-19 20:51 编辑

        const 关键字定义的是常量,也就是立即数,常量的值在程序编译时就已经确定,不占用变量空间,不可以在运行时被赋值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-19 21:07:36 | 显示全部楼层
这是为定义的行为,不同编译器会导致不同的结果。
PS F:\Repos\ccode> gcc cod.c -o cod ; if ($?) { .\cod }
100 
2000
PS F:\Repos\ccode> clang cod.c -o cod.exe ; if ($?) {./cod}
100
100
PS F:\Repos\ccode> 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 17:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表