首先我们从字符串来引入:
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[ ]并不不同。