【发布时间】:2021-06-08 11:52:45
【问题描述】:
我有接下来的两个代码示例:
const char *val = strchr(ch, ' ');
const int diff = (int)(val - ch);
char arr[diff];
和
const char *val = strchr(ch, ' ');
const int diff = (int)(val - ch);
char arr[diff] = {0};
第二个会产生类似的错误
错误:可变大小的对象可能未初始化
这是正确的错误,我明白为什么会发生。
不知道为什么第一个代码 sn -p 没有产生错误?
更新: 同样关于 sizeof(arr) 首先 sn-p 给出了数组的大小,但我认为 sizeof 是一个编译时运算符(?)
【问题讨论】:
-
第一个sn-p没有尝试初始化数组,所以没有错误可以诊断。
标签: arrays c initialization sizeof variable-length-array