C - sizeof int数组总是返回4

Dis*_*age 5 c gcc dev-c++

可能重复:
C中的sizeof结构数组?
sizeof作为函数参数传递的数组

只是想写一个基本sum()功能.

int sum(int arr[]) {
    int total = 0 , i = 0 , l = sizeof arr;

    for(i=0;i<l;i++) {
        total += arr[i];
    }

    return total;
}
Run Code Online (Sandbox Code Playgroud)

l总是等于4(我知道最终除以sizeof int)

在Windows 7中使用默认编译器选项运行Dev-C++.

Dan*_*her 11

作为函数参数,数组会衰减为指向元素类型的指针,因此sizeof arr也是如此sizeof(elem*).

你必须传递元素的数量作为额外的参数,没有办法确定从指向数组的第一个元素的指针(这是在那种情况下实际传递的).