使用指针数组操作多个字符串,还可以通过二级指针变量的方式进行这种操作,首先定义一个字符串指针数组s,用来指向多个字符串常量,再定义一个二级指针变量p,使其指向数组s,因数组s中的每个元素都是数组,因此指针变量p必须定义为指向指针的指针(即二级指针)。
#include<iostream>
using namespace std;
int main()
{
char *a[]={"hello","the","world"};
char **pa=a;
cout<<pa<<endl;
cout<<*pa<<endl;
cout<<**pa<<endl;
}
1.定义的是一个指针数组,指数组中的元素都是指针,而a依然是数组名 ,所以a是一个指正常量,指向该数组的首地址。
2.定义了一个二级指针,目的是想用这个二级指针来操作这个指针数组,现在这个数组的类型为char*,
那么定义的指针类型就该为char**.
3.所以pa其实同样是指向这个数组的指针,但是不是常量指针,可以进行指针移动如pa++,指向的就是指针数组中的第二个元素:the.
4.*pa就是对指针解引用,*(pa+1)对第二个元素的解引用。
5.**pa
*pa是指向第一个字符串的首地址的指针,*(*pa)就是对第一个字符串的第一个元素的解引用,*(*pa+1)就是堆一个字符串中的第二个元素的解引用。