函数内数组大小计算错误 [英] Miscalculation of array size inside a function

查看:30
本文介绍了函数内数组大小计算错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆