我正在使用int*
创建一个malloc()
数据类型的动态数组。但问题是,如何知道数组的结束?
对于\0
数据类型,没有相当于int*
的内容,那么,如何做到这一点?传递大小作为函数的参数?
答案 0 :(得分:12)
C不像其他一些语言那样管理数组长度。
你可能会考虑这个结构:
typedef struct t_thing {
int* things;
size_t count;
} t_thing;
正在使用中:
t_thing t = { (int*)malloc(sizeof(int) * n), n };
答案 1 :(得分:9)
对于整数,没有相当于\0
的“官方”,但你当然可以使用自己的值。例如,如果您的整数表示距离,那么您可以使用-1(不是有效距离)作为标记值来指示数组的结尾。
如果您的整数数组可以合理地包含任何 int
值,那么您可以使用附加参数将已分配数组的大小传回函数。
答案 2 :(得分:0)
您可以使用NULL
作为结束值。您可以使用跟踪条目数的数组向结构添加整数。或者您可以单独跟踪大小。你可以随心所欲地做到这一点。
答案 3 :(得分:0)
C不知道动态数组的结尾在哪里。你应该记住为数组分配的大小。
答案 4 :(得分:0)
当你用malloc分配内存时,分配的字节数就存储在'malloc'ated内存开始之前。如果你知道尺寸,你也知道结束! 这在K& R书的C语言中有所解释。希望我能给你一个页码,但是当你看到它时你就会知道它。