函数内数组大小计算错误 [英] 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;
}
产生以下输出:
main: Length Of Array=9
doStuff: Length Of Array=1
为什么main中的数组大小计算正确,而函数内部却是错误的?
Why is the array size calculated correctly in main, but is wrong inside the function?
推荐答案
因为在 main
中有一个数组,而在函数中有一个指向该数组的指针.
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屋!
查看全文