如果定义一个函数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标准中允许在形参声明为数组时,在中括号中写入一些内容,用以对传入的数组大小或形参指针进行一些限制。但不是你脑补的那种写法,而且这个新语法用得并不多,初学时不用考虑这个。
- 1 回答
- 0 关注
- 1315 浏览
添加回答
举报
0/150
提交
取消