C语言二分法遇到了数组大小计算问题

C语言问题!
想用C语言写一个二分法练习,在main函数中定义了数组,把算法写到了一个函数里面想要调用。

img

这里的printf打出来的是正确的

img


但是在调用的函数中打印时

img

数组的大小变成了8

img

这是首地址
不能直接获取长度
可以这样操作

#include <iostream>
using namespace std;

void printArray(int a[], int length) {
    for (int i = 0; i < length; i++) {
        cout << a[i] << " ";
    }
    cout << endl;
}
int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int len = sizeof(arr)/sizeof(arr[0]); // 获取数组长度
    printArray(arr, len);
    return 0;
}

因为参数类型是指针,你获取的是指针大小不是数组长度
你需要加一个参数把长度传进来