二级指针,指向指针的指针

我们先来看一个例子:

int a=0;

int *b=&a;

假设我们有第三个变量时:

c=&b;

c的类型显然是一个指针,变量b是一个”指向整形的指针”,所以任何指向b的类型必须是指向“指向的指针”的指针,更通俗的来讲就是指针的指针。

它合法吗?

指针变量和其他变量一样,占据内存中某个特定的位置,所以用&操作符取得他的地址是合法的。

这个变量声明为:

int **c;

所以将他们写在一起,将会是这样的:

int    a=0;

int    *b=&a;

int     **c=&b;

我们知道*操作符具有从右向左的结合性,所以,这个表达式相当于*(*c),我们必须从外向内逐层求解。

当然,我们要进一步学习关于二级指针的知识,单单到这一程度是完全不够的,我们需要一些更加通用的例子来了解它。

例:

int   i;

int   *pi;

int    **ppi;


那么有了上面这些信息之后,我们来看一些语句

ppi=π

这条语句把ppi初始化指向变量pi。以后我们就可以安全的对ppi执行间接访问操作了。

*ppi=&i;

这条语句把pi(通过ppi间接访问)初始化指向变量i,接下来后,下面这些语句将会有相同的效果:

i=‘a’;

*pi=‘a’;

**ppi=‘a’;


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值