多级指针的应用

多级指针

我们先清楚一些关于指针的基本概念:

指针就是地址,地址就是指针
指针变量就是存放内存单元编号的变量
int *p 它的意义是定义了一个指针变量p,p存放的是整型变量的地址
赋值语句p=&i;的含义&i就是取i的地址,所以这句话表达的是将i的地址放在了变量p中
*p的意思就是以p的内容为地址的变量

int main(int argc, char const *argv[])
{
    int i = 5;
    int *p = &i;   // p变量存放int类型地址
    int **q = &p;  // q变量存放int*类型地址
    int ***r = &q; // r变量存放int**类型地址
    return 0;
}

我们可以将int**q 分为两部分来看,即为 int* 和 (q),对于后面 (q) 中的“”表示 q 是一个指针变量,而前面的 int 表示指针变量 q 只能存放 int* 型变量的地址。所有对于二级指针甚至多级指针,我们都可以把它拆成两部分。首先不管是多少级的指针变量,它都是一个指针变量,指针变量就是一个“”,其余的“”表示的是这个指针变量只能存放什么类型变量的地址。
在这里插入图片描述

	int a = 10 ;
	int *p = &a ; //一级指针
	*p = 100 ; //*p就是a
 
	int **q = &p ;
	//*q就是p
	//**q就是a
 
	int ***t = &q;
	//*t就是q
	//**t就是p
	//***t就是a

看上面这串代码,指针变量的“基类型”用来指定该指针变量可以指向的变量的类型,即该指针变量只能存放什么类型变量的地址。所以 intp 表示 p 指向的是 int 型变量,也就是说里面只能放int类型的变量地址。这时的p表示a的地址,而p等于a ;

好的现在我们向下继续看,到了二级指针这里,在这里为什么我们在存放&p的时候要使用两个呢?前面我们知道,p是我们的int类型,p是表示的a的地址,我们在存放p时使用int类型去存放,那么当我们存放&p的时候,就要使用int去存放了。

那下面我们同理,由上面可知,存p应该使用int类型,存&p应该使用int类型,同时q也等价于&p,那么存q就要使用int类型,所以题目中存&q就理所当然的要使用int类型啦。那么我们反过来看,t存的是&q,那么t就是q了;而*t也就是*q也就p了;**t也是p也是我们一开始设定的变量a了。

所以对于多级指针我们一定要将p或者q等当作一个变量,将int*****等当作一个一个类型来看就可以了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙栩源

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值