问答详情
源自:6-4 数组作为函数参数

replaceMax 函数没有return ,为什么 main函数中arr1 [1]的值还是改变了?

void replaceMax(int arr[],int value)
{
    int max = arr[0];
    int index = 0;
    int i;
    for(i=1;i<5;i++)
    {
        if(arr[i]>max)
        {
             max = arr[i];    //将数组中较大的数赋值给max
            index = i;  //记录当前索引
        }                
    }  
    arr[index] = value;
}

在replaceMax 函数中 ,不是应该要 return 一个数组或者 arr[1]吗?

如果不return 的话 为什么 main 函数中的 arr1[1] 的值改变了 ?

我想问的关键在于 return ,为什么没有return。

提问者:慕哥1510327 2016-03-07 20:01

个回答

  • 留得枯荷听雨声lyx
    2016-03-08 20:25:13
    已采纳

    这个题目不需要返还数值,因为函数对数组的操作实质上是通过指针完成的,数组传值实际上是传递的数组的首地址,也就是说,函数和main函数中的数组是同一个数组,所以在replaceMax中对元素值的改变会直接影响main函数。

  • 慕移动9181930
    2022-03-25 07:38:00

    会的试试便知道了

  • lunzhenmin
    2016-03-07 23:22:17

    replaceMax 函数类型为void, 可以没有return;

    传递给replaceMax 函数的数组arr是全局变量, 所以在replaceMax 函数里面是能改变它的元素值的.