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

这是为什么?

为什么在数组做参数那一节中的题目里 

replaceMax(arr1, arr2[0]  ); //将数组arr1和数组arr2的第一个元素传入函数中

第一个arr1不用加[0]呢?

正在回答

2 回答

准确地说:数组用作右值时,会自动转换成指向数组首元素的指针。 

故 arr1 实际上是将 arr1[0] 的地址(&arr1[0])传入函数,而 arr2[0] 就是将arr2数组的第一个元素(就是一个int)传入函数。

而且,声明在函数参数列表中的数组,会被视为指向数组元素类型的指针,也就是说:

void replaceMax(int arr[], int value);
// 相当于
void replaceMax(int *arr, int value); // 和你上面调用函数时传入参数类型相匹配


0 回复 有任何疑惑可以回复我~
#1

weibo_骁骁一直记得身边有你_0 提问者

非常感谢!
2015-07-01 回复 有任何疑惑可以回复我~

传参时,默认为数组的第一个元素,   arr1=arr1[0]

0 回复 有任何疑惑可以回复我~
#1

赤坂龙之介 回复 weibo_骁骁一直记得身边有你_0 提问者

你那道题第一个参数是将数组传过去,第二个参数是传arr2第一个元素传过去。 你看定义的函数void replaceMax(int arr[],int value) 。 上面的解释错了,我没看题
2015-06-28 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926210    人
  • 解答问题       20797    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

这是为什么?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信