2016-12-05 77 views
1

我在一些源代碼是這樣的初始化C++與變量的引用數組,然後值

for(int i = 0; i < NUM; i++){ 
    count[i] = new int; 
    *count[i] = 0; 
} 

看到了,想知道的一點是什麼,而不是僅僅有:

count[i] = 0;

+0

一個可能的原因:第一個代碼塊中的數組元素即使在count數組超出作用域後也會保留。數組超出範圍後,第二個代碼塊中數組的元素將不可訪問。 –

+0

好的,謝謝。所以可能是count [x]設置了一個不同的變量,所以當count被破壞時,你希望這個值仍然在那裏? –

+0

我可能看起來太簡單了,但也許'count'只是一個'int *'數組? –

回答

1

並想知道點什麼,而不是隻有count[i] = 0;

那麼,初始化一個指針爲零的含義與初始化指向零的含義不同。

取消引用指向有效對象的指針即可,並返回該對象的值。解引用零值(即空指針)的指針具有未定義的行爲。


您可能會想知道,爲什麼要使用數組指針來動態分配整數而不是整數數組。你是對的,因爲它很少是理性的選擇。但是,這段代碼並沒有證明這樣做的任何理由。如果可能的話,你可以通過詢問編寫代碼的人來找出答案。