0

我正在处理一个类型的函数:

 int xyz(int input[])

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

4

3 回答 3

5

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

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

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

}
于 2013-04-19T09:51:53.947 回答
3

不......在被调用函数中没有(可移植的)方法,所以在这种情况下(即当没有传递元素数量参数时)调用者采用某种约定是正常的,例如在最后提供一个标记值使用元素或保证一定数量的元素。如果使用了哨兵,您可以通过在调试器中检查调用代码来向自己证明这是完成的。

于 2013-04-19T09:53:11.010 回答
0

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

于 2013-04-19T09:53:43.393 回答