本博客已迁往http://coredumper.cn
通过如下的实例来讲解这个问题:
#include <stdio.h>
int main(void)
{
char a[3][4] = {"123", "abc", "edf"};
char *p[3];
char **pp;
int i;
for(i = 0; i < 3; ++i){
p[i] = a[i];
}
pp = p;
for(i = 0; i < 3; ++i){
puts(*pp++);
}
return 0;
}
执行结果如下:
123
abc
edf
在上面的例子中,a是一个存储了3个字符串的数组,p是一个存储了3个字符指针的数组,pp是一个指向字符指针对象的指针。
第一个for循环将数组p的3个字符指针分别指向了存储在a中的3个字符串,然后将pp指向了数组p的起始地址,第二个for循环通过pp依次获得了数组p中的3个元素值,即3个字符串的起始地址,再通过函数puts()将3个字符串显示出来。