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

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。

正在回答

3 回答

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

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

慕哥1510327 提问者

感谢~
2016-03-17 回复 有任何疑惑可以回复我~

会的试试便知道了

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

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

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


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

举报

0/150
提交
取消

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

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