问答详情
源自:-

这是为什么?

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

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

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

提问者:weibo_骁骁一直记得身边有你_0 2015-06-27 19:02

个回答

  • 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); // 和你上面调用函数时传入参数类型相匹配


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

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