二级指针操作指针数组

分享到: 
收藏 +2
0
使用指针数组操作多个字符串,还可以通过二级指针变量的方式进行这种操作,首先定义一个字符串指针数组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)就是堆一个字符串中的第二个元素的解引用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值