数组int a[10],用sizeof(a)能得出4*10,但放在子函数int f(int *c),调用f(a) 中就不行,程序如下

int a[10]={0,1,2,3,4,5,6,7,8,9};

int f(int *c)
{
int m;
m=sizeof(c);
return m;
}
void main()
{
int f(a);
}
但 void main()
{
int m;
m=sizeof(a);
}可以。
用子函数哪儿出错了?

有你这样写代码的么?你这是在重定义f(a), 而不是在调用。
void main()
{
int f(a); // 这里要写 int m=0; m=f(a);
}追问

写漏了,上面得到的是40,下面的例子得到的是4,如何改达到调用子函数就能得到40?

追答

m=sizeof(a); 这个是计算整个a的长度,就是40了;
如果调用函数,那你就是把a的首地址传给了函数,那函数自然只算那个地址的长度,就是4了。

追问

使用子函数,该如何改?才能得到40。(子函数方便只需改主函数的数组名就能得到另外的数组长度)

追答

怎么改都不能得到40。 计算数组长度不能通过传参数方式。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-28
好吧,我去查了一下,我错了= =
相似回答