在函数内部数组的大小计算错误 [英] Miscalculation of array size inside a function
本文介绍了在函数内部数组的大小计算错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
下面的C程序:
int doStuff(int afm[]);
int main(){
int afm1[9] = {1,2,3,4,5,6,7,8,9}; //size=9
int afmLength = sizeof(afm1)/sizeof(int);
printf("main: Length Of Array=%d\n", afmLength); //9 OK
int k = doStuff(afm1);
system("PAUSE");
return 0;
}
int doStuff(int afm[]){
int afmLength = sizeof(afm)/sizeof(int);
printf("doStuff: Length Of Array=%d\n", afmLength); //1 WRONG
return 1;
}
产生下面的输出:
produces the following output:
main: Length Of Array=9
doStuff: Length Of Array=1
为什么主正确计算数组大小,但其实是错误的函数内?
Why is the array size calculated correctly in main, but is wrong inside the function?
推荐答案
由于在主
你有一个数组,在函数你有一个指针数组。
Because in main
you have an array and in the function you have a pointer to that array.
int doStuff(int afm[])
等同于
int doStuff(int *afm)
这篇关于在函数内部数组的大小计算错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文