//以下注释,请根据程序的运行顺序查看,此程序目的是替换指定数组中的最大元素 //看了各路大神的指正,以下更新之后的答案,跟着程序运行一步一步的走,并且还看不懂的同学私信,一起探讨 #include <stdio.h> void a(int arr[],int value)//a(arr1[5],1) { int max = arr[0];//max==arr[0]==arr1[0]==10 int index = 0; int i; for(i=1;i<5;i++)//1,2,3,4,5(比较后不在执行) { if(arr[i]>max)//41>10,3>41,12>41,22>41 { max=arr[i];//max=41,不执行,不执行,不执行 //将数组中较大的数赋值给max index = i;//index=1,不执行,不执行,不执行 } } arr[index] = value;//arr[index]==arr[1]==41=(赋值)1 }//这个函数运行完之后arr1[]={10,1,3,12,22} int main() { int arr1[5] = {10,41,3,12,22}; int arr2[5] = {1,2,3,4,5}; int i; a(arr1,arr2[0]); for(i=0;i<5;i++) { printf("%d ",arr1[i]); } return 0; }
谢谢大神解惑,解释的越详细越好,谢谢大神
#include <stdio.h> void a(int arr[],int value)//a(arr1[5],1) { int max = arr[0];//max==arr[0]==arr1[0]==10 int index = 0; int i; for(i=1;i<5;i++)//目的是找出最大值的索引 { if(arr[i]>max)//41>10,3>41,12>41,22>41 { max=arr[i]; //将数组中较大的数赋值给max index = i;//index=1是最终结果 } } arr[index] = value;//arr[index]==arr[1]==10=(赋值)1,对的 }//这个函数运行完之后arr1[]={10,1,3,12,22},没错 //你的困惑是为什么函数中改变了,main方法中输出的数组就改变了,这是因为arr[]相当于一个 //指向数组首地址的const指针,函数中对整数的改变其实就是对实际数组的改变 int main() { int arr1[5] = {10,41,3,12,22}; int arr2[5] = {1,2,3,4,5}; int i; a(arr1,arr2[0]); for(i=0;i<5;i++) { printf("%d ",arr1[i]); } return 0; }
//以下注释,请根据程序的运行顺序查看,此程序目的是替换指定数组中的最大元素
#include <stdio.h>
void a(int arr[],int value)//a(arr1[5],1)
{
int max = arr[0];//max==arr[0]==arr1[0]==10
int index = 0;
int i;
for(i=1;i<5;i++)//1,2,3,4,5(比较后不在执行)
{
if(arr[i]>max)//41>10,3>41,12>41,22>41
{
max=arr[i];//max=41,不执行,不执行,不执行 //将数组中较大的数赋值给max
index = i;//index=1,不执行,不执行,不执行
}
}
arr[index] = value;//arr[index]==arr[1]==10=(赋值)1
}//这个函数运行完之后arr1[]={10,1,3,12,22}
int main()
{
int arr1[5] = {10,41,3,12,22};
int arr2[5] = {1,2,3,4,5};
int i;
a(arr1,arr2[0]);
for(i=0;i<5;i++)
{
printf("%d ",arr1[i]);
}
return 0;
}