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:51 编辑
const 关键字定义的是常量,也就是立即数,常量的值在程序编译时就已经确定,不占用变量空间,不可以在运行时被赋值。 这是为定义的行为,不同编译器会导致不同的结果。
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]