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

来源:6-4 数组作为函数参数

慕哥1510327

2016-03-07 20:01

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。

写回答 关注

3回答

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

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

    慕哥1510...

    感谢~

    2016-03-17 15:24:46

    共 1 条回复 >

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

    会的试试便知道了

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

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

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


C语言入门

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

926206 学习 · 20797 问题

查看课程

相似问题