C語言或C++中,數組元素全為指針的數組稱為指針數組
一維指針數組的定義為:類型名*數組標識符[數組長度]
eg: int*ptr_array[10];
以下內容來自百度百科
鏈接
http://baike.baidu.com/link?url=r6JRJbaleIw_69o-t8uO2vTF0r4oukf1bMMpp0sp9caXDbprF9LNZXwfsf4QovUKWloO2r6CJiNFNPNvP5aRS_
與數組指針關系
例如:*p[2]是指針數組,實質是一個數組,里面的兩個元素都是指針 []的優先級比*的優先級高,p先與[]結合,形成數組p[2],有兩個元素的數組,再與*結合,表示此數組是指針類型的,每個數組元素相當於一個
指針變量
與二維數組對比
二維
數組:如char string_1[10][10]只要定義了一個二維
數組,無論賦不賦值,系統都會給他分配相應空間,而且該空間一定是連續的。其每個元素表示一個字符。我們可以通過制定下標對其元素進行修改。
char a[3][8]={"gain","much","strong"};
char *n[3]={"gain","much","strong"};
他們在內存的存儲方式分別如右圖所示,可見,系統給
數組a分配了
3×8的空間,而給n分配的空間則取決於具體字符串的長度。
此外,系統分配給a的空間是連續的,而給n分配的空間則不一定連續。
由此可見,相比於比二維字符
數組,
指針數組有明顯的優點:一是指針數組中每個元素所指的字符串不必限制在相同的字符長度;二是訪問指針數組中的一個元素是用指針間接進行的,效率比下標方式要高。 但是二維字符
數組卻可以通過下標很方便的修改某一元素的值,而
指針數組卻無法這么做。