我正在使用malloc()
製作一個帶有int*
數據類型的動態數組。但問題是:如何知道數組的末尾?沒有一個相當於\0
的數據類型爲int*
,那麼,該怎麼做?傳遞大小作爲函數的參數?我希望你明白這一點。任何幫助非常感謝。如何知道int *數組的結尾?
回答
C不像其他語言那樣管理數組長度。
你可能會考慮這個結構:
typedef struct t_thing {
int* things;
size_t count;
} t_thing;
使用:
t_thing t = { (int*)malloc(sizeof(int) * n), n };
對於整數,沒有與「\0
」等價的「官方」,但您當然可以使用自己的價值。例如,如果您的整數表示距離,則可以使用-1(不是有效距離)作爲標記值來指示數組的結束。
如果你的整數數組可以合理地包含的任何int
值,那麼你可以傳回給你的函數一個額外的參數分配數組的大小。
我喜歡你的想法。我也會使用'#define EON EOF'。 – Jack 2012-04-19 13:02:52
您可以使用NULL
作爲最終值。您可以使用跟蹤條目數的數組向一個結構添加整數。或者你可以分開跟蹤大小。無論你想要什麼,你都可以做到。
你會如何使用NULL作爲int []的最終值?字節00 00 00 00將被解釋爲(int)0。 – 2012-04-19 00:49:54
準確。如果數組中沒有其他值包含0,則可以使用0作爲終結符。 – 2012-04-19 00:51:53
如果沒有其他值包含42,則可以使用42.答案意味着對我來說,至少「int」是某種可以爲空的類型,當然這不是。 – 2012-04-19 00:53:27
C不知道哪裏是你的動態數組的末尾。你應該記住你分配給陣列的大小。
當你用malloc分配內存時,分配的字節數存儲在'malloc'內存開始之前。如果你知道大小,你也知道結局! 這在C的聖經中解釋,K & R書。希望我也可以給你頁碼,但是當你看到它時你會知道它的。
- 1. std :: end如何知道數組的結尾?
- 2. 如何知道$ string是否以','結尾?
- 3. 我如何知道元組的結構?
- 4. C如何知道我的字符串的結尾?
- 5. int數組尾隨零
- 6. 如何讓sed'w'命令知道文件名的結尾?
- 7. bash如何知道變量名稱的結尾?
- 8. 如何解析char數組的結尾?
- 9. 如何知道網格視圖是否滾動到結尾
- 10. 如何知道表格組的結果數量?
- 11. 如何知道const數組的大小?
- 12. 數組如何知道它的大小?
- 13. delete []如何知道數組的大小?
- 14. Sqlite.NET不知道int []?
- 15. 如何讓數組知道是否有非數字輸入或它到達輸入的結尾?
- 16. C++ Substract字符串結尾,不知道結果的長度
- 17. 如何將結構添加到結構數組的結尾?
- 18. 如何知道尾巴中的吐司數量
- 19. C++如何知道數字是否以某種位模式結尾
- 20. 如何數組排序[數組[INT]]假設內部數組的大小相同,但我們不知道它
- 21. 不知道如何爲數組賦值
- 22. 如何知道表是否是數組?
- 23. 意外$結尾:我知道確切位置的罪魁禍首是,但不知道如何解決它
- 24. 如何知道循環如何結束
- 25. 知道數組的密鑰
- 26. 知道循環中的std :: string的結尾
- 27. 如何知道System.Window.Forms.Help.ShowHelp的結果
- 28. 如何知道堆結束的地址?
- 29. 如何知道C++/CLI反射參數是long還是int?
- 30. 如何比較int中的int數組
你正在使用malloc()glob像malloc(sizeof(int)* ELEMENTS)的一些內存我想。然後,您確實知道ELEMENTS的大小,您可以保存該變量並將其傳遞給您的函數。 – 2014-03-28 15:29:52