可以思考一個(gè)問(wèn)題,arr[]作為形參,本應(yīng)在函數(shù)結(jié)束后被釋放,為什么還會(huì)影響到arr1的參數(shù)變化呢?
#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];? ? ? ? ?//將數(shù)組中較大的數(shù)賦值給max
? ? ? ? ? ? index = i;? //記錄當(dāng)前索引
? ? ? ? }? ? ? ? ? ? ? ??
? ? }??
? ? 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] ); //將數(shù)組arr1和數(shù)組arr2的第一個(gè)元素傳入函數(shù)中
? ? for(i=0;i<5;i++)
? ? {
? ? ? ? printf("%d ",arr1[i]);? ? ? ? ? ? ? ??
? ? }
? ? return 0;? ??
}
2024-04-11
個(gè)人理解,僅作參考,arr是指針,指向的是一個(gè)地址,給函數(shù)的參數(shù)也是一個(gè)地址,就像房間一樣,arr與arr1都有門牌號(hào)地址,進(jìn)入的是同一個(gè)房間,改變了該房間內(nèi)的物品,arr1進(jìn)入時(shí)就變化了,而arr2[0]與value則是兩個(gè)房間(不同的內(nèi)存空間),只是房間擺設(shè)格局是一樣的(數(shù)值一樣),但value使用完了就會(huì)清空(函數(shù)運(yùn)行結(jié)束),將空房騰出,并不會(huì)影響arr2[0]