我可以假设二维数组像这样正确初始化吗?
当我像这样声明一个二维数组时:
char myArray[20][30] = {"ABC", "Is Easy As One Two Three"};
我可以假设该数组中的所有其他字符现在都设置为 \000
吗?
When I declare a two-dimensional array like this:
char myArray[20][30] = {"ABC", "Is Easy As One Two Three"};
Can I assume that all other chars in this array are now set to \000
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在 C 中,对象永远不会部分初始化 - 如果您使用了初始化程序,则保证整个对象被初始化(在这种情况下,“对象”是由 20 个数组组成的整个数组,每个数组包含 30 个字符)。任何未显式初始化的成员都会递归地初始化为零(对于算术类型)或 NULL(对于指针类型)。
因此,在这种情况下,答案是肯定的 - 所有未由初始化器显式指定值的 char 都保证为 0。
这在 C99 标准的第 6.7.8 节“初始化”中进行了描述。相关段落是:
和
Objects are never partially initialised in C - if you have used an initialiser, then the entire object is guaranteed to be initialised (in this case, the "object" is the whole array of 20 arrays of 30 chars each). Any members not explicitly initialised are recursively initialised to zero (for arithmetic types), or NULL (for pointer types).
So the answer, in this case, is yes - all the
char
s not explicitly given values by the initialiser are guaranteed to be 0.This is described in the C99 standard in section 6.7.8, Initialisation. The relevant paragraphs are:
and