假設我們有一個指向數組開頭和數組大小的指針(例如,定義爲int * p)(例如,1000)。我們希望將所有1000個數組值重置爲0.什麼是最簡單的方法?將數組值重置爲0的最簡單方法是什麼?
回答
最簡單的方法是使用memset。
memset(p, 0, 1000 * sizeof(int));
如果您想要速度,請使用標準庫函數memset。 它基本上只是循環遍歷每個值並寫入一個零,但它已針對速度進行了優化。
void * memset (void * ptr, int value, size_t num);
原型包含在string.h
中。
使用memset()
爲零存儲器有益你的int
陣列的例子中,或用於任何其它整數類型。
如果數組是動態分配的,另一個選項是使用calloc()
而不是malloc()
來分配它,以保證它初始設置爲全零。
對於float
或double
陣列(或指針,如果你想讓他們初始化爲NULL),使用循環較好,因爲這些方法無法移植:有沒有關於這些類型的陳述保證,因此清一色位零不一定代表浮點零(儘管它恰好適用於最常見的格式,IEEE 754)或NULL指針(儘管平臺在這種情況下並非罕見)。
(見C99§6.2.6有關整數類型的擔保;在§7.20.3.1腳註爲calloc()
。)
我一起去:
#include <string.h>
memset(p, 0, 1000 * sizeof(p[0]));
避免重複的答案會更好。請投票相似的答案,而不是重複 –
我的首選是'sizeof(p [0])'而不是'sizeof(int)',以便該方法可以工作,即使'p'的類型改變。我沒有看到任何其他發佈的答案。我提出了@ MatthewSlattery的詳細答案以及提到這個想法的評論。 –
- 1. 將char數組轉換爲WCHAR數組最簡單的方法是什麼?
- 2. 將數組轉換爲向量最簡單的方法是什麼?
- 3. 將數組轉換爲xml字符串的最簡單方法是什麼?
- 4. 尋找數組重複單元的最簡單方法是什麼?
- 5. 在行上打印數組的最簡單方法是什麼?
- 6. 將DataTable作爲TSV顯示的最簡單方法是什麼?
- 7. 將ndarray轉換爲cv :: Mat的最簡單方法是什麼?
- 8. 將xml轉換爲html最簡單的方法是什麼?
- 9. 通過引用重新填充數組的最簡單方法是什麼?
- 10. 將元素推到數組的開頭的最簡單方法是什麼?
- 11. 告訴spring bean將特定值視爲null的最簡單方法是什麼?
- 12. 在javascript中將123456789值轉換爲123.456.789的最簡單方法是什麼?
- 13. 將數組中的數字分組爲3或4組的最簡單方法是什麼?
- 14. PHP:將類常量轉儲到數組中的最簡單方法是什麼
- 15. 將MySQL結果轉換爲簡單數組的最佳方式是什麼?
- 16. 什麼是最佳方式將其重寫成簡單的
- 17. 從Y = 0到y =屏幕中間,將視圖的位置設爲動畫的最簡單方法是什麼?
- 18. 在Game Center中設置highScore最簡單的方法是什麼?
- 19. Tomcat6:什麼是配置java.util.logging最簡單的方法?
- 20. 在VB.net中保存設置的最簡單方法是什麼
- 21. 獲取iPhone當前位置的最簡單方法是什麼?
- 22. 在OSX上設置Postgresql最簡單的方法是什麼?
- 23. 在C中測試空值的最簡單方法是什麼?
- 24. 從XML中刪除值的最簡單方法是什麼
- 25. 什麼是從數組集合中獲取數組值的最簡單/最好的方法?
- 26. 將C++中RGB值數組轉換爲圖像文件的最簡單方法是什麼?
- 27. Python:什麼是從time.time()值轉換爲time.strftime()值的最簡單方法?
- 28. 將DOCTYPE添加到Scala XML的最簡單方法是什麼?
- 29. 將python腳本變成webapp最簡單的方法是什麼?
- 30. 將一個System.Data.DataSet導入Excel的最簡單方法是什麼?
memset的(P, 0,1000); – Cyclonecode
@KristerAndersson:使'1000 * sizeof(* p)'? – sehe
Woops,@sehe - 正確。 – Cyclonecode