C - sizeof int数组总是返回4

时间:2012-04-22 15:08:50

标签: c gcc dev-c++

  

可能重复:
  sizeof array of structs in C?
  sizeof an array passed as function argument

只是尝试编写一个基本的sum()函数。

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

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

    return total;
}

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

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

1 个答案:

答案 0 :(得分:11)

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

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