在C語言中什么是指針和數(shù)組等價
在C語言中對數(shù)組和指針的困惑多數(shù)都來自這句話。說數(shù)組和指針“等價”不表示它們相同, 甚至也不能互換。它的意思是說數(shù)組和指針的算法定義可以用指針方便的訪問數(shù)組或者模擬數(shù)組。
特別地,等價的基礎(chǔ)來自這個關(guān)鍵定義:
一個T 的數(shù)組類型的左值如果出現(xiàn)在表達式中會蛻變?yōu)橐粋指向數(shù)組第一個成員的指針(除了三種例外情況); 結(jié)果指針的類型是T的指針。
這就是說, 一旦數(shù)組出現(xiàn)在表達式中, 編譯器會隱式地生成一個指向數(shù)組第一個成員地指針, 就像程序員寫出了&a[0] 一樣。例外的.情況是, 數(shù)組為sizeof 或&操作符的操作數(shù), 或者為字符數(shù)組的字符串初始值。
作為這個這個定義的后果, 編譯器并那么不嚴(yán)格區(qū)分?jǐn)?shù)組下標(biāo)操作符和指針。在形如a[i] 的表達式中, 根據(jù)上邊的規(guī)則, 數(shù)組蛻化為指針然后按照指針變量的方式如p[i] 那樣尋址, 如問題6.2 所述, 盡管最終的內(nèi)存訪問并不一樣。如果你把數(shù)組地址賦給指針:
p = a;
那么p[3] 和a[3] 將會訪問同樣的成員。
【在C語言中什么是指針和數(shù)組等價】相關(guān)文章:
簡述數(shù)組與指針的區(qū)別12-13
C++筆試題:關(guān)于鏈表和指針12-17
C語言中一個結(jié)構(gòu)不能包含指向自己的指針12-27
c語言指針面試常見問題09-28
C語言中break與continue的區(qū)別12-23
函數(shù)指針的定義是什么12-19
Javascript的常規(guī)數(shù)組和關(guān)聯(lián)數(shù)組的對比小結(jié)11-17