若使用数组作函数实参,则以下正确的说法是()A.必须在主调函数中说明此数组的大小 B.实参数组类型与形参数组类型可以不匹C.在被调用函数中,不需要考虑形参数组的大小 D.实参数组名与形参数组名必须一致

在这里插入图片描述

卷子答案选的是A。
A肯定是对的,很多人认为char a[]=“hello”,不就没有说明数组大小吗,但其实c会自动说明大小为6,一个数组大小不说明根本不可能使用。
很多人觉得选C,认为传的是数组首地址,而且一维数组作为形参还不用写一维长度,即int func(int a[]);
这关长度什么事?但其实我们在使用整型数组作为形参时大多数情况还必须得到数组长度,将它也作为形参传进去,不然怎么遍历?
记住这时sizeof(a)/sizeof(a[0])可得不到数组长度了,因为a做为形参使用时,已经降级为普通指针了,已经不再是那个特殊的数组名了。看代码:

void test4(int a[]) {
 
    printf("int a[]作为形参使用sizeof(a)=%d",sizeof(a));
     
}
 
int main() {
 
    int a[4] = { 1,2};
    printf("sizeof(a)=%d\n",sizeof(a));
    test4(a);
    return 0;
}

在这里插入图片描述

可以看到二者完全不一样,a作为形参传入后就是普通指针了,指针类型在本机是8字节的。
所以整型数组一般还要加传长度才行,即int func(int a[], int length);也就是说被调函数要考虑数组长度,C选项错误。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值