需要简单的C字符串初始化概念澄清

时间:2014-02-27 23:33:14

标签: c string initialization

如果我有这样的C字符串初始化:

char a[5]={'a','b','c'};

这有效吗? 什么是[3]和[4]的价值? 空字符是否自动附加到?

的末尾

谢谢!

4 个答案:

答案 0 :(得分:5)

它们将被初始化为值0.当您保留一些未初始化的元素时,会自动添加Null。

答案 1 :(得分:0)

这取决于您所关注的C标准:

  • 如果您严格遵守C90,那么它禁止您这样做,感谢BLUEPIXY的启示

  • 然后,这些标准有一些扩展,使您可以编译此代码而不会出现任何错误,在这种情况下,这很好。

因此,如果是后者,C语言会将rest初始化为零。

char a[5] = {}

将所有索引初始化为零。

答案 2 :(得分:0)

如果在函数内调用a [3]和[4]将是未初始化的。也就是说,它们将成为当时记忆中的任何东西。

如果在函数外声明,则[3]和[4]将设置为0。

答案 3 :(得分:-1)

根据实现情况,我认为数组的最后一个元素要么完全是随机的,要么只是0的等价物,甚至是其他元素,但除了那个数组之外,初始化也就好了。