數組名和指針的區別


作者:SHI家的魚
鏈接:https://www.zhihu.com/question/41805285/answer/202040382
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

1. 己址

數組和指針,都是有自己的地址的。在代碼中,你可以用取地址運算符“&”來取得。程序中是:

printf("%x %x\n", &pInt, &arr);

2. 己值

數組和指針,都是有自己的數據值的。程序中,數組arr的數據值,是arr[0]的地址;而對於指針pInt,通過

pInt = arr;

之后,pInt的數據值也是arr[0]的地址。

但是,有一點不一樣的是,arr的數據值是不可以改變的,是個常量;而指針變量pInt的數據值,是可以改變的,你可以:

pInt = arr;

你也可以:

pInt = arr + 1;

隨你!

另外,都可以在數組和指針的己值上,做運算,比如:

arr + 1;

pInt + 1;

3. 他值

數組和指針,在獲取他值時,在代碼的寫法上是一樣的。比如對於數組,你想獲取第2個元素的值,你可以這樣寫:

arr[1];*(arr + 1);

對於指針pInt,你也可以這樣寫:

pInt[1]; *(pInt + 1);

也可以在數組和指針的他值上做運算,比如:

arr[0] + 1; *arr + 1; *(arr + 1) + 1;

pInt[1] + 1; *pInt + 1; *(pInt + 1) + 1;

4. 總結

數組和指針在概念上是不一樣的,但是在代碼的寫法上,有些是一樣的。有興趣的朋友,可以結合我的文章中提出的“兩己三他”:己址、己值、他值、他址、他型這5個維度來理解。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM