这是为什么?

来源:-

weibo_骁骁一直记得身边有你_0

2015-06-27 19:02

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

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

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

写回答 关注

2回答

  • onemoo
    2015-06-28 10:18:55
    已采纳

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

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

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

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


    weibo_...

    非常感谢!

    2015-07-01 21:10:55

    共 1 条回复 >

  • 赤坂龙之介
    2015-06-27 20:40:47

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

    赤坂龙之介 回复weibo_...

    你那道题第一个参数是将数组传过去,第二个参数是传arr2第一个元素传过去。 你看定义的函数void replaceMax(int arr[],int value) 。 上面的解释错了,我没看题

    2015-06-28 09:35:10

    共 2 条回复 >

C语言入门

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

926027 学习 · 20793 问题

查看课程

相似问题