数组初始化给出垃圾值[重复]

Posted

技术标签:

【中文标题】数组初始化给出垃圾值[重复]【英文标题】: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] << " ";
    

【问题讨论】:

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

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

【讨论】:

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

以上是关于数组初始化给出垃圾值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

java----数组

我们如何在 C++ 中初始化所有值为 0 的向量 [重复]

memset显示错误的结果[重复]

分段错误:为什么这里的数组索引超出范围?

如何用空值初始化这种形式的数组? (Java)[重复]

Java中的数组越界问题