徹底弄明白指針數組是啥

首先我們從字符串來引入:

1.一個字符串的引用:

char * pStr = "today";

其中的指針變量pStr指向字符串"today"的第一個字符‘t’的地址(即存值)。不管字符串有多長,pStr指針變量只存儲字符串的第一個字符的地址,這樣一來,使用指向字符串的指針變量即可整體引用一個字符串。


2.多個字符串的引用
一個指針變量只能存放一個字符串的地址,因此不能引用多個字符串。

假設要處理多個字符串的"Monday",“Tuesday”…多個字符串的時候。因爲指針的大小一樣,類型相同,因此可以用相同類型的指針變量集合在一起構成字符指針類型。

char * pPtr[] = {"Monday","Tuesday"};

3.指針數組的解釋
儘管這些字符串看起來好像存儲在pPtr指針數組變量中,單指針數組變量中實際上只存儲了指針,每一個指針都指向其對應的第一個字符。也就是說,第i個字符串的所有字符存儲在存儲器中的某個位置,指向它的指針存儲在pPtr[i]中。即pPtr[0]指向"Monday"、pPtr[1]指向"Tuesday"。


4.字符串常量在內存中保存在常量區
在這裏插入圖片描述


5.字符數組的大小:(以32位機爲例)
它裏面存放的是指針,在32位系統中,一個指針是4個字節。所以它的大小就是:數組容量 * sizeof(*p).


總結:指針數組,它本質上還是數組,只不過數組裏面存這指針。它與int array[ ] ,float array[ ]並不不同。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章