1. 程式人生 > >C語言中用陣列名作為引數能改變實引數組的值的理解

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

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

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

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

舉例:

        int     i = 12;

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

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

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