【问题标题】:Array Initialization giving garbage values [duplicate]数组初始化给出垃圾值[重复]
【发布时间】:2015-02-28 20:08:00
【问题描述】:

我想用 一个值 初始化所有数组元素,所以我想使用 选项 1,较短的版本。但这似乎不起作用。但是 选项 2 有效。当我尝试通过选项 1 进行初始化时,任何人都可以解释发生了什么问题..

 int main()
    {
        int arr[5] = { 2 }; // option 1
        int arr1[5] = { 2, 2, 2, 2, 2 }; //option 2
        for (int i = 0; i < 5; i++)
            cout << arr[i] << " ";
        for (int i = 0; i < 5; i++)
            cout << arr1[i] << " ";
    }

【问题讨论】:

  • 为什么要投反对票。我添加了代码 sn-p。清楚地问出了我的疑问。不知道 SO 对我有什么期望。
  • 谁能解释为什么我得到了反对票。我可能错过了存在重复的问题。这就是为什么 DUPLICATE 选项可以通知 SO 用户的原因。为什么是负面注释!
  • 听起来很粗鲁,所以 SO 不喜欢人们在没有进行基础研究的情况下提出问题。一般来说,如果第一次在谷歌上找到问题的答案,你可能会被否决。
  • 我搜了一下,看不懂,然后问。无论如何点! :)

标签: c++


【解决方案1】:
int arr[5] = { 2 };

您只为第一个元素提供初始值。在这种情况下,所有元素都默认初始化为该类型,即在您的情况下为 0。

【讨论】:

  • 我明白你的意思,但它限制了数组初始化的使用,对吧?因为通常百万分之一的情况下,我们只想初始化数组中的第一个值,其余的为 0。通常,如果我们希望数组初始化为一个值,我们希望整个数组设置为该特定值.我说得有道理吗?
  • 这只是一种语言结构。你可以通过 std::fill_n 做你想做的事。
  • 为什么当我把它分成两行时相同的语法不起作用。 'int arr[5];' arr[5] = {-1}; 。它开始提供垃圾值。
  • 因为 int arr[5];没有初始化任何元素。
  • 但是我确实在第二行初始化了它,对吧?我在第二行之后使用 cout。
猜你喜欢
  • 2020-07-23
  • 1970-01-01
  • 1970-01-01
  • 2021-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-19
相关资源
最近更新 更多