C語言 陣列名作函式引數的四種情況

2021-10-03 11:18:25 字數 1325 閱讀 3668

人之所以痛苦,那是因為你在成長。--------magic_guo

如果想要通過函式呼叫得到n個要改變的值

思路:①在主函式中設n個變數,用n個指標變數指向它們

②設計乙個函式,有n個指標形參,在這個函式中改變這n個形參所指向的值

③在主函式中呼叫這個函式,在呼叫時將n個指標變數做為實參,將它們的位址傳給該函式的形參

④在執行該函式的過程中,通過形參指標變數,改變它們所指向的n個變數的值

⑤主調函式中就可以使用這些改變了值的變數

同樣,陣列是一些連續變數的容器,當然也可以通過函式也改變陣列中的值。

如果有乙個實參陣列,想要在函式中改變此陣列中的元素的值,實參與形參的對應關係有以下四種情況:

1.實參和形參都是陣列名

2.實參是陣列名,形參是指標變數

3.實參是指標變數,形參是陣列名

4.實參和形參都是指標變數

我們來看**:

1.實參和形參都是陣列名

# include

//實參用屬組名,形參也用陣列名

intmain

(void

)void

inv(

int arr,

int n)

}

2.實參是陣列名,形參是指標變數

# include

//實參用陣列名,形參使用指標變數

intmain

(void

)void

inv(

int* p,

int n)

}void

inv2

(int

* p,

int n)

}

4.實參和形參都是指標變數

# include

//使用指標變數作實參,指標變數作形參

intmain

(void

)void

inv3

(int

* p,

int n)

}void

inv4

(int

* p,

int n)

}

其中在inv函式中,無論是使用指標變數還是使用陣列名,改變的只是實參指標變數所指向的變數的值。

牢記一句話(我認為是學習指標的重中之重,以不變應萬變):

c語言中實參變數和形參變數之間的資料傳遞是單向的「值傳遞」方式。用指標變數作函式引數同樣要遵循這一規則。不可能通過執行呼叫函式來改變實參指標變數的值,但是可以改變實參指標變數所指向變數的值。

C 用陣列名作函式引數

c 用陣列名作函式引數 微學苑 常量和變數可以用作函式實參,同樣陣列元素也可以作函式實參,其用法與變數相同。陣列名也可以作實參和形參,傳遞的是陣列的起始位址。由於實參可以是表示式,而陣列元素可以是表示式的組成部分,因此陣列元素當然可以作為函式的實參,與用變數作實參一樣,將陣列元素的值傳送給形參變數。...

c語言 關於陣列名作引數傳遞問題

本文以 int 型為例,以函式func為例 1 int iexama 定義乙個整型數 2 int pexamb 定義乙個指向整型數的指標 3 int iexamc 4 定義乙個一維陣列 4 int pexamd 5 定義乙個陣列,陣列的每個元素是 指向整型數 的指標 5 int iexame 6 7...

C語言中用陣列名作為引數能改變實參陣列的值的理解

很多初學者不理解為什麼c語言中用陣列名作為引數能改變實參陣列的值,現在來談談我的理解 把實參陣列傳遞給函式,則形參從陣列 得到了其實位址,因此陣列與實參陣列共佔了同一段記憶體單元,在函式呼叫期間,該變了形引數組的值,也就改變了實參陣列的值。現在問題來了,怎麼理解共占同一段記憶體單元和值改變造成的影響...