首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数内部数组大小计算错误

函数内部数组大小计算错误
EN

Stack Overflow用户
提问于 2011-02-11 02:53:53
回答 2查看 442关注 0票数 0

下面的C程序:

代码语言:javascript
复制
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;
}

生成以下输出:

代码语言:javascript
复制
main: Length Of Array=9
doStuff: Length Of Array=1

为什么在main中计算的数组大小是正确的,但在函数中却是错误的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-11 02:56:01

因为在main中,你有一个数组,在函数中,你有一个指向那个数组的指针。

代码语言:javascript
复制
int doStuff(int afm[])

等同于

代码语言:javascript
复制
int doStuff(int *afm)
票数 7
EN

Stack Overflow用户

发布于 2011-02-11 03:00:29

除了David Heffernan的答案(这是正确的)之外,您还应该有另一个参数,该参数是传递给doStuff方法的数组长度。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4961342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档