在C中初始化的const数组定义是否需要长度参数?

时间:2018-05-25 12:28:25

标签: c codevisionavr

const int array[]  = {1,2};
const int array[2] = {1,2};

编译和工作都没有问题。这些有什么不同吗?

(我使用Codevision,但这不应该真的重要)

1 个答案:

答案 0 :(得分:5)

不,没有区别。

唯一的例外是第二种情况,如果用字符串文字初始化char数组并且数组的大小不反映'\0' - 终止符,则后者被切断关闭。

char s[] = "alk" // makes s 4 chars wide
char s[3] = "alk" // makes s 3 chars wide

对于所有其他类型或类型的初始化,编译器应警告过大的初始化。

如果初始化程序是"较小"然后是数组,其余的元素被初始化,好像它们是在globale范围内定义的,就好像它们是static一样。

所有这些与此上下文中的任何内容是否const完全无关。