關系
數組指針是指向數組首元素的地址的指針,其本質為指針(這個指針存放的是數組首地址的地址,相當于2級指針,這個指針不可移動);指針數組是數組元素為指針的數組,其本質為數組。例如:*p是指針數組,實質是一個數組,裡面的兩個元素都是指針 []的優先級比*的優先級高,p先與[]結合,形成數組p,有兩個元素的數組,再與*結合,表示此數組是指針類型的,每個數組元素相當于一個指針變量。
二維
二維數組:如char string_1隻要定義了一個二維數組,無論賦不賦值,系統都會給他分配相應空間,而且該空間一定是連續的。其每個元素表示一個字符。我們可以通過指定下标對其元素進行修改。指針數組:如char *str_B 系統至少會分配5個連續的空間用來存儲5個元素,表示str_B是一個5個元素的數組,每個元素是一個指向字符型數據的一個指針。由此可見,相比于比二維字符數組,指針數組有明顯的優點:一是指針數組中每個元素所指的字符串不必限制在相同的字符長度;二是訪問指針數組中的一個元素是用指針間接進行的,效率比下标方式要高。 但是二維字符數組卻可以通過下标很方便的修改某一元素的值,而指針數組卻無法這麼做。
區别
數組指針隻是一個指針變量,它占有内存中一個指針的存儲空間。指針數組是多個指針變量,以數組形式存在内存當中,占有多個指針的存儲空間。