猪猪虾 发表于 2021-10-19 20:42:23

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

#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;
}

jackz007 发表于 2021-10-19 20:50:48

本帖最后由 jackz007 于 2021-10-19 20:51 编辑

      const 关键字定义的是常量,也就是立即数,常量的值在程序编译时就已经确定,不占用变量空间,不可以在运行时被赋值。

hrpzcf 发表于 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>
页: [1]
查看完整版本: const问题,很短,为啥通过指针仍然无法修改const定义的变量