创建一个函数以返回 C 中 int 数组的长度

Ati*_*sal 5 c arrays function

我是 C 编程新手。我想创建一个函数,它将整数数组作为参数并返回数组的长度。我知道下面的代码可以正确计算长度。

    int arr[] = {1, 2, 3, 4, 5};
    int length = sizeof(arr) / sizeof(arr[0]);
Run Code Online (Sandbox Code Playgroud)

但是,如果我创建如下所示的函数并将数组作为参数传递,则它不起作用。

    int length_of(int* arr) {
        return sizeof(arr) / sizeof(arr[0]);
    }
Run Code Online (Sandbox Code Playgroud)

我的猜测是我没有正确地将数组传递到函数中。实现这个的正确方法是什么?

Sou*_*osh 4

好吧,没有办法通过函数来​​完成这个任务。作为参数传递给函数的任何数组都将衰减为指针类型(指向第一个元素)。因此,在被调用的函数内部,您将得到的只是指针的大小。

实现此目的的一种间接方法是在数组中包含称为哨兵值的东西,并从被调用的函数中迭代数组元素以查找哨兵值,同时递增计数器,一旦找到,就获取该计数器的长度。