动态分配的整数数组的大小

时间:2013-04-19 09:49:48

标签: c

我正在处理类型的函数:

 int xyz(int input[])

我无法访问main函数,因此不知道数组的大小。 如何找到输入数组的大小? 有没有办法知道数组的结束位置? sizeof(input)/sizeof(int*)给出1作为输入基本上是一个指针。

3 个答案:

答案 0 :(得分:5)

如果调用者没有提供有关数组的大小信息,那么就无法在函数xyz()中获得大小。

您可以将大小信息传递给另一个变量(或作为数组的元素)。

int xyx(int abc[], size_t len)
{

}

答案 1 :(得分:3)

否......在被调用函数中没有(可移植的)方式,所以在这种情况下(即没有传递number-of-elements参数)这是正常的,以便调用者采用某些约定,例如提供一个sentinel值在最后使用的元素中或保证一定数量的元素。如果使用了一个标记,你可以通过检查调试器中的调用代码来证明这是在做的。

答案 2 :(得分:0)

如果将数组传递给函数并且不提供长度,则无法找到它,因为数组衰减为指针,其大小始终为32(64)位。