#include <stdio.h>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;}int main(){ int arr1[] = {10,41,3,12,22}; int arr2[] = {1,2,3,4,5}; int i; replaceMax(arr1 , arr2[0] ); //将数组arr1和数组arr2的第一个元素传入函数中 for(i=0;i<5;i++) { printf("%d ",arr1[i]); } return 0; }
1 回答
已采纳
Yexiaomo
TA贡献152条经验 获得超157个赞
因为传 数组arr1时, 是把地址传过去的, 这个arr数组也就是主函数中的 arr1数组,只不过 数组发生了改变
在replaceMax()中, 运行到 arr[index] = value;这一行代码时, index索引为 1, arr[1]的值就为了 value(也就是 1)
刚刚说过是把地址传过去了, 所以在replaceMax()函数中修改 arr数组, 也就变相的 修改 arr1数组里面的值,
所以,打印时,出现的 1 ,也就是 arr1[1]的值-->(也就是arr[1] 的值)
- 1 回答
- 0 关注
- 1123 浏览
添加回答
举报
0/150
提交
取消