彻底弄明白指针数组是啥

首先我们从字符串来引入:

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[ ]并不不同。

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