我正在使用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. 我如何知道元組的結構?
- 3. C如何知道我的字符串的結尾?
- 4. int數組尾隨零
- 5. bash如何知道變量名稱的結尾?
- 6. 如何解析char數組的結尾?
- 7. delete []如何知道數組的大小?
- 8. C++ Substract字符串結尾,不知道結果的長度
- 9. 如何讓數組知道是否有非數字輸入或它到達輸入的結尾?
- 10. 如何將結構添加到結構數組的結尾?
- 11. C++如何知道數字是否以某種位模式結尾
- 12. 不知道如何爲數組賦值
- 13. 如何知道表是否是數組?
- 14. 意外$結尾:我知道確切位置的罪魁禍首是,但不知道如何解決它
- 15. 知道數組的密鑰
- 16. 如何知道堆結束的地址?
- 17. 如何知道C++/CLI反射參數是long還是int?
- 18. 如何比較int中的int數組
- 19. 如何知道多維數組的數組索引,只知道一些值?例如 '身份證'=> 'Id2的'
- 20. numpy數組結尾的索引
- 21. 如何知道Objective-C中的數組組成?
- 22. 如何知道數組的值是否由零組成?
- 23. C如何知道函數中2D動態數組的維數?
- 24. 數組以數組元素值內的字符(「)」)結尾,而不是實際的數組結尾
- 25. 如何將int數組轉換爲可爲null的int數組?
- 26. 如何通過數組指針知道指向結構的指針?
- 27. 如何知道
- 28. 如何知道流已經結束C#
- 29. 如何知道http響應結束?
- 30. 如何知道Optaplanner求解已結束?
你正在使用malloc()glob像malloc(sizeof(int)* ELEMENTS)的一些內存我想。然後,您確實知道ELEMENTS的大小,您可以保存該變量並將其傳遞給您的函數。 – 2014-03-28 15:29:52