【发布时间】:2020-08-26 08:09:40
【问题描述】:
我最近遇到了一行代码和四个选项:
char fullName[30] = {NULL};
A) 第一个元素被分配一个 NULL 字符。
B) 数组的每个元素都被赋值为 0(零)
C) 数组的每个元素都被赋值为 NULL
D) 数组为空。
我们选择的答案是选项 C,因为虽然数组仅使用单个 NULL 进行初始化,但 C++ 使用 NULL 填充数组的其余部分。
但是,我们的教授不同意,他说答案是 A,他说:
所以第一个元素是
NULL,当您显示它时,它会显示第一个元素,即NULL。
引用完整地显示了问题;没有提供其他信息。我很好奇哪一个是正确的,如果有人能解释为什么所说的答案是正确的。
【问题讨论】:
-
选项
A和B并不相互排斥。形式上,它们都是正确的。 -
我认为这可能取决于您使用的编译器。我确实记得在 90 年代初期使用过这种初始化,我很确定它只是将第一个字符设置为 \0。在这些日子里,NULL 被定义为 '\0',或 (void)0,或其他取决于编译器的东西。
-
@MPW 你会想错的。没有元素被“未分配”。
-
@MPW 所有元素都已初始化。
标签: c++ arrays null initialization