簡體   English   中英

為什么在 C++ 中未初始化數組中有隨機數,而在半初始化數組的未初始化成員中沒有?

[英]Why there are Random numbers in non initialized array but not in non initialized members of half initialized array in C++?

為什么在示例 1 代碼中它在數組的未初始化項中分配 0,但在示例 2 中在完全未初始化的數組中分配隨機數? 為什么它也不將 0 分配給完全未初始化的數組?

示例 1:

int ar[5] ={0,1};
for (int i =0; i< 5; i++){
   cout << ar[i] << " ";
}
// output: 0 1 0 0 0 

示例 2:

int ar[5] ;
for (int i =0; i< 5; i++){
   cout << ar[i] << " ";
}
// output: 1875998720 0 1875947552 0 1876031856 

它們是兩種不同的初始化。

情況2, int ar[5]; 執行默認初始化,因為所有元素都被初始化為不確定的值。

情況1, int ar[5] ={0,1}; 執行聚合初始化,因為第一個和第二個元素被初始化為01 ,其余元素的值初始化(零初始化)為0

在第一個例子中! 您正在使用默認值初始化大小為 5 的數組。

int arr[5] = {0,1}

花括號中的值將分配給數組中的相應索引。 例如,數組的第一個索引為 0,第二個索引為 1,然后默認 0 值到數組中的其余索引。

在第二個示例中,您只是聲明了數組而不是初始化。 因此,在數組的每個索引處,都有垃圾值,當您迭代數組時,您會在數組的每個索引處收到無例外(垃圾)值。

如果你聲明一個變量但沒有用任何值初始化,它會分配我們無法預測的隨機垃圾值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM