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

2021-06-14 13:11:00 字數 355 閱讀 4666

很多初學者不理解為什麼c語言中用陣列名作為引數能改變實參陣列的值,現在來談談我的理解:

把實參陣列傳遞給函式,則形參從陣列**得到了其實位址,因此陣列與實參陣列共佔了同一段記憶體單元,在函式呼叫期間,該變了形引數組的值,也就改變了實參陣列的值。

現在問題來了,怎麼理解共占同一段記憶體單元和值改變造成的影響 呢?

舉例:int     i = 12;

int *p = & i;   //此時*p與i共占同一段記憶體單元,

*p = 23;  //此時改變了*p的值,i的值也就跟著改變了。此時 i = 23;

上述例子中,可以理解為*p表示形引數組,i表示實參,它們共占同一段記憶體單元 ,所以改變形參能改變實參的值。

使用陣列名作為函式引數

主函式中初始化乙個二維陣列,表示乙個矩陣,矩陣,並將每個元素都輸出,然後呼叫子 函式,分別計算每一行的元素之和,將和直接存放在每行的第乙個元素中,返回主函式之 後輸出各行元素的和。include using namespace std void rowsum int a 4 int nrow int...

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

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

C 用陣列名作函式引數

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