我正在使用int*
数据类型制作一个动态数组malloc()
。但问题是,如何知道数组的结尾?
没有对应\0
的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
值,那么您可以将已分配数组的大小与附加参数传回您的函数。
您可以NULL
用作最终值。您可以使用跟踪条目数的数组将整数添加到结构中。或者您可以单独跟踪尺寸。你可以随心所欲地做。
C 不知道动态数组的末尾在哪里。您应该记住为数组分配的大小。
当您使用 malloc 分配内存时,分配的字节数存储在“malloc”内存开始之前。如果你知道大小,你也知道结束!这在 K&R 书籍 C 的圣经中有解释。希望我也能给你页码,但是当你看到它时你就会知道。