int mid_square(int z[],int length){
int i,cnt=3,sum=0;
if (length%2 == 0) { //even length
length = (length+1)/2;
}
else{ //odd length
length = length / 2;
}
for (i=length-2; i<=length+1; i++) {
sum+=z[i]*pow(10, cnt);
cnt--;
}
return sum;
}
在此代码中,我使用长度作为函数的局部变量。
但我不想使用变长
我该怎么办?
在我使用 length = sizeof(z)/ 4 之前,但长度始终是相同的值。 (4 ?? 8 ??我不记得了)
答案 0 :(得分:1)
一旦数组作为参数传递给函数,它就会在调用期间衰减到指针,因此无法知道函数中数组的大小,并且必须有一个额外的参数来指定数组的大小
因此函数中的sizeof(z)
会为您提供sizeof(pointer)
而非sizeof(array)