我正在使用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