【发布时间】:2021-01-24 06:58:21
【问题描述】:
我有两个程序:
第一个程序:
#include<stdio.h>
int main()
{
static const int a = 10;
int * b;
b = &a;
*b = 200;
printf("%d", a);
return 0;
}
第二个节目:
#include<stdio.h>
int main()
{
const int a = 10;
int * b;
b = &a;
*b = 200;
printf("%d", a);
return 0;
}
第一个程序有一个运行时错误:“总线错误:10”,但第二个程序运行良好。 你能告诉我这两个程序中的 const 和 static const 有什么区别吗!
【问题讨论】:
-
对于这两个程序来说,正确的一点是它们会产生未定义的行为,因为不建议更改常量,您的编译器甚至会在这两个程序中警告您
warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] -
这能回答你的问题吗? changing const value in C