可能重复:
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 ++。
答案 0 :(得分:11)
作为函数参数,数组会衰减为指向元素类型的指针,因此sizeof arr
为sizeof(elem*)
。
你必须传递元素的数量作为额外的参数,没有办法确定从指向数组的第一个元素的指针(这是在那种情况下实际传递的那个)。