【发布时间】:2017-10-31 06:12:06
【问题描述】:
在以下代码中,const int 不能用作数组大小:
const int sz = 0;
typedef struct
{
char s[sz];
} st;
int main()
{
st obj;
strcpy(obj.s, "hello world");
printf("%s", obj.s);
return 0;
}
【问题讨论】:
-
因为数组的大小必须是一个常数,而一个const变量是一个const变量,而不是一个常数,这意味着它不能被改变
-
只是语言的另一个缺陷。
-
...在 C++ 中已修复。
-
@Mgetz
const整数变量如果有constexpr初始化器,就会隐式变为constexpr。 -
你很幸运代码没有构建,因为如果它构建了,你会有未定义的行为写入一个零大小的数组。
标签: c