当数组从main传递给另一个函数时,如何找到整数数组长度?

时间:2014-02-03 17:18:54

标签: c

如何从用户定义的函数中获取arrayLength?

int getArrayLength(int *arr){
   //our logic
   return result;
}

3 个答案:

答案 0 :(得分:3)

简单地说:你做不到。你应该将它作为另一个论点传递:

int getArrayLength(int *arr, int size){ ...

如果尝试使用sizeof,它将返回指针的大小。您还可以使用特殊值来指示数组的最后一个元素(对于字符串,如0),但添加约定会使事情变得更复杂。

答案 1 :(得分:3)

您需要做以下两件事之一:

  1. 让来电者提供长度,或者......

  2. 同意一个可以检测数组结尾的标记值。

  3. 在一般情况下,正确的答案是选项1.您不应该在不使用长度参数的情况下编写采用C数组的函数。

    在某些特定情况下,选项2的效果非常好。例如,\0用于标记字符串的结尾,字符串只是字符数组。如果0不是数组元素的有效值,则可以用于除字符串以外的其他情况。但一般情况下,请选择选项1.

答案 2 :(得分:2)

将数组长度传递给函数,否则不能。这是因为sizeof(arr)会给出指向int的指针的大小,而不是整个数组的大小。