如何从用户定义的函数中获取arrayLength?
int getArrayLength(int *arr){
//our logic
return result;
}
答案 0 :(得分:3)
简单地说:你做不到。你应该将它作为另一个论点传递:
int getArrayLength(int *arr, int size){ ...
如果尝试使用sizeof,它将返回指针的大小。您还可以使用特殊值来指示数组的最后一个元素(对于字符串,如0),但添加约定会使事情变得更复杂。
答案 1 :(得分:3)
您需要做以下两件事之一:
让来电者提供长度,或者......
同意一个可以检测数组结尾的标记值。
在一般情况下,正确的答案是选项1.您不应该在不使用长度参数的情况下编写采用C数组的函数。
在某些特定情况下,选项2的效果非常好。例如,\0
用于标记字符串的结尾,字符串只是字符数组。如果0
不是数组元素的有效值,则可以用于除字符串以外的其他情况。但一般情况下,请选择选项1.
答案 2 :(得分:2)
将数组长度传递给函数,否则不能。这是因为sizeof(arr)
会给出指向int
的指针的大小,而不是整个数组的大小。