我正在处理类型的函数:
int xyz(int input[])
我无法访问main函数,因此不知道数组的大小。
如何找到输入数组的大小?
有没有办法知道数组的结束位置?
sizeof(input)/sizeof(int*)
给出1作为输入基本上是一个指针。
答案 0 :(得分:5)
如果调用者没有提供有关数组的大小信息,那么就无法在函数xyz()中获得大小。
您可以将大小信息传递给另一个变量(或作为数组的元素)。
int xyx(int abc[], size_t len)
{
}
答案 1 :(得分:3)
否......在被调用函数中没有(可移植的)方式,所以在这种情况下(即没有传递number-of-elements参数)这是正常的,以便调用者采用某些约定,例如提供一个sentinel值在最后使用的元素中或保证一定数量的元素。如果使用了一个标记,你可以通过检查调试器中的调用代码来证明这是在做的。
答案 2 :(得分:0)
如果将数组传递给函数并且不提供长度,则无法找到它,因为数组衰减为指针,其大小始终为32(64)位。