C++定義指針數組


C語言或C++中,數組元素全為指針的數組稱為指針數組

一維指針數組的定義為:類型名*數組標識符[數組長度]

eg: int*ptr_array[10];

以下內容來自百度百科

鏈接

http://baike.baidu.com/link?url=r6JRJbaleIw_69o-t8uO2vTF0r4oukf1bMMpp0sp9caXDbprF9LNZXwfsf4QovUKWloO2r6CJiNFNPNvP5aRS_

與數組指針關系

數組指針是指向 數組首元素的地址的 指針,其本質為指針(這個指針存放的是數組首地址的地址,相當於2級指針,這個指針不可移動); 指針數組是數組元素為指針的數組,其本質為數組。
例如:*p[2]是指針數組,實質是一個數組,里面的兩個元素都是指針 []的優先級比*的優先級高,p先與[]結合,形成數組p[2],有兩個元素的數組,再與*結合,表示此數組是指針類型的,每個數組元素相當於一個 指針變量
 
 

與二維數組對比

二維 數組:如char string_1[10][10]只要定義了一個二維 數組,無論賦不賦值,系統都會給他分配相應空間,而且該空間一定是連續的。其每個元素表示一個字符。我們可以通過制定下標對其元素進行修改。
指針數組:如char *str_B[5] 系統至少會分配5個連續的空間用來存儲5個元素,表示str_B是一個5個元素的數組,每個元素是一個指向 字符型數據的一個指針。
如果我做這樣的定義:
char a[3][8]={"gain","much","strong"};
char *n[3]={"gain","much","strong"};
他們在內存的存儲方式分別如右圖所示,可見,系統給 數組a分配了
3×8的空間,而給n分配的空間則取決於具體字符串的長度。
此外,系統分配給a的空間是連續的,而給n分配的空間則不一定連續。
由此可見,相比於比二維字符 數組指針數組有明顯的優點:一是指針數組中每個元素所指的字符串不必限制在相同的字符長度;二是訪問指針數組中的一個元素是用指針間接進行的,效率比下標方式要高。 但是二維字符 數組卻可以通過下標很方便的修改某一元素的值,而 指針數組卻無法這么做。
 


免責聲明!

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



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