为了账号安全,请及时绑定邮箱和手机立即绑定

求当形参是一个数组时怎么办?

求当形参是一个数组时怎么办?

C
qq_新生_10 2017-12-26 21:00:34
如果定义一个函数int xu(int a[100])在应用时,是不是要标明这个数组的实际有效长度例如     a[100]={1,2,3}在形参里是不是为int  xu(int   a[3][100])求大佬解答
查看完整描述

1 回答

已采纳
?
onemoo

TA贡献883条经验 获得超454个赞

并不!

函数形参声明为数组的,都会被当作是“数组元素指针”类型

所以 int xu(int a[100]) 其实就是 int xu(int *a)

也就是说:形参数组的大小完全没有作用[注1]

写 int xu(int a[]) 和 int xu(int a[100]) 都是一样的结果。


在调用传参时,如果传入的实参是数组,也会隐式转型为数组元素指针类型。所以最终传入的也是指针,和形参类型一致。并且同样,这和实参数组的大小完全没有关系。


至于你最后给出的这个写法 int  xu(int   a[3][100]) 就过分脑补了哦......


注1:在C99标准中允许在形参声明为数组时,在中括号中写入一些内容,用以对传入的数组大小或形参指针进行一些限制。但不是你脑补的那种写法,而且这个新语法用得并不多,初学时不用考虑这个。

查看完整回答
反对 回复 2017-12-26
  • qq_新生_10
    qq_新生_10
    可我还没学指针 0.0 谢谢大佬了
  • onemoo
    onemoo
    那你暂时只需要记住,函数的实参打算用数组时,形参写成数组形式,并且中括号中留空就好了,就算指定了形参数组的大小也是没有意义的。而传参时,实参数组的大小也是没有影响的。
  • qq_新生_10
    qq_新生_10
    请问当实参为数组时,定义一个无返回值的功能函数,在功能函数里对数组进行排序,在主函数里引用功能函数,主函数里的的数组会变成以排好序的么?
点击展开后面3
  • 1 回答
  • 0 关注
  • 1315 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信