下面的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中计算的数组大小是正确的,但在函数中却是错误的?
发布于 2011-02-11 02:56:01
因为在main中,你有一个数组,在函数中,你有一个指向那个数组的指针。
int doStuff(int afm[])等同于
int doStuff(int *afm)发布于 2011-02-11 03:00:29
除了David Heffernan的答案(这是正确的)之外,您还应该有另一个参数,该参数是传递给doStuff方法的数组长度。
https://stackoverflow.com/questions/4961342
复制相似问题