gpt4 book ai didi

c++ - 字符数组初始化,第一个元素为空

转载 作者:行者123 更新时间:2023-12-01 08:29:34 26 4
gpt4 key购买 nike

我最近面临一行代码和四个选项:

char fullName[30] = {NULL};
  1. A) First element is assigned a NULL character.

  2. B) Every element of the array is assigned 0 ( Zeroes )

  3. C) Every element of the array is assigned NULL

  4. D) The array is empty.



我们选择的答案是选项 C,因为数组只用一个 NULL 初始化。 , C++ 用 NULL 填充数组的其余部分.

然而,我们的教授不同意,说答案是A,他说:

So the very first element is NULL, and when you display it, it's displaying the first element, which is NULL.



引文完整地显示了问题;没有提供其他信息。我很好奇哪个是正确的,如果有人能解释为什么所说的答案是正确的。

最佳答案

这个问题定义不明确,但选项 B 似乎是最正确的答案。

结果取决于 NULL 的准确程度已定义,其中 depends on the compiler (更准确地说,在标准库实现上)。如果定义为 nullptr ,代码将无法编译。 (我认为没有任何主要的实现会这样做,但仍然如此。)

假设 NULL未定义为 nullptr ,那么它必须被定义为一个值为 0 的整数文字(即 00L 或类似的东西),这使您的代码等效于 char fullName[30] = {0}; .

这将用零填充数组,因此选项 B 是正确答案。

通常,当您使用花括号括起来的列表初始化数组时,每个元素都会被初始化。如果您提供的初始值设定项少于元素数量,则其余元素将归零。

关于其余选项:

  • 选项 C 不清楚,因为如果代码编译成功,那么 NULL相当于 0 ,因此可以认为选项 C 等效于选项 B。
  • 选项 A 是否有效取决于您如何解释它。如果这意味着其余元素未初始化,那么它是错误的。如果它没有指定剩余元素会发生什么,那么它就是一个有效的答案。
  • 选项 D 完全错误,因为数组不能为“空”。
  • 关于c++ - 字符数组初始化,第一个元素为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61718622/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com