C语言 如何知道int* array的结尾?

v1uwarro  于 2023-06-28  发布在  其他
关注(0)|答案(5)|浏览(117)

我正在使用malloc()创建一个int*数据类型的动态数组。但问题是,如何知道数组的结束?
对于int*数据类型,没有与\0等效的数据类型,那么,如何做到这一点呢?是否将大小作为函数的输出参数传递?

xeufq47z

xeufq47z1#

C不像其他语言那样管理数组长度。
你可以考虑这样的结构:

typedef struct t_thing {
  int* things;
  size_t count;
} t_thing;

在使用中:

t_thing t = { (int*)malloc(sizeof(int) * n), n };
mspsb9vt

mspsb9vt2#

对于整数,没有与\0等效的“官方”值,但您当然可以使用自己的值。例如,如果整数表示距离,则可以使用-1(不是有效距离)作为标记值来指示数组的结束。
如果你的整数数组可以合理地包含 anyint值,那么你可以通过一个附加参数将分配的数组的大小传递回你的函数。

7xzttuei

7xzttuei3#

您可以使用NULL作为结束值。可以使用跟踪条目数的数组向结构添加整数。或者您可以单独跟踪大小。你想怎么做就怎么做。

3mpgtkmj

3mpgtkmj4#

C不知道动态数组的结尾在哪里。你应该记住你分配给数组的大小。

pinkon5k

pinkon5k5#

当你用malloc分配内存时,分配的字节数就在“malloc”分配的内存开始之前存储。如果你知道大小,你也知道结局!这是在C的圣经中解释的,K&R书。希望我也能给予你页码,但你看到的时候就知道了。

相关问题