如何知道int *数组的结尾?

时间:2012-04-19 00:43:49

标签: c arrays int

我正在使用int*创建一个malloc()数据类型的动态数组。但问题是,如何知道数组的结束?

对于\0数据类型,没有相当于int*的内容,那么,如何做到这一点?传递大小作为函数的参数?

5 个答案:

答案 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语言中有所解释。希望我能给你一个页码,但是当你看到它时你就会知道它。