2011-11-30 80 views

回答

10

最簡單的方法是使用memset。

memset(p, 0, 1000 * sizeof(int)); 
1

如果您想要速度,請使用標準庫函數memset。 它基本上只是循環遍歷每個值並寫入一個零,但它已針對速度進行了優化。

void * memset (void * ptr, int value, size_t num); 

原型包含在string.h中。

0

您可以使用bzero,memset或純循環。

+1

bzero已棄用。一個純循環應該被棄用:) – sehe

+0

我不知道bzero已被棄用。謝謝你糾正我。自從什麼時候以及爲什麼被棄用? – Gigi

4

使用memset()爲零存儲器有益你的int陣列的例子中,或用於任何其它整數類型。

如果數組是動態分配的,另一個選項是使用calloc()而不是malloc()來分配它,以保證它初始設置爲全零。

對於floatdouble陣列(或指針,如果你想讓他們初始化爲NULL),使用循環較好,因爲這些方法無法移植:有沒有關於這些類型的陳述保證,因此清一色位零不一定代表浮點零(儘管它恰好適用於最常見的格式,IEEE 754)或NULL指針(儘管平臺在這種情況下並非罕見)。

(見C99§6.2.6有關整數類型的擔保;在§7.20.3.1腳註爲calloc()。)

2

我一起去:

#include <string.h> 

memset(p, 0, 1000 * sizeof(p[0])); 
+0

避免重複的答案會更好。請投票相似的答案,而不是重複 –

+2

我的首選是'sizeof(p [0])'而不是'sizeof(int)',以便該方法可以工作,即使'p'的類型改變。我沒有看到任何其他發佈的答案。我提出了@ MatthewSlattery的詳細答案以及提到這個想法的評論。 –

相關問題