二级三级多级指针的理解

多级指针的理解


前言

通过一段代码了解多级指针

`

一、指针是什么?

指针也是一个变量,是变量就有自己的地址,所以指针也有自己的地址,这点很重要在下面的例子中,不过它的值保存的是另外一个变量的地址。这点和普通变量的值不同,普通变量的值保存的只是一个数值。

二、使用步骤

(可以先看下面的代码在来看这段话!!)二级指针指向一级指针(也就是保存的一级指针的地址),指向一级指针的地址,通过一次解引用得到一级指针的值(也就是保存的变量的地址)在次解引用则可以得到变量的值
同理三级指针指向二级指针(三级指针也就是保存的二级指针的地址),通过一次解引用得到二级指针的值,这个值是一级指针的地址,再次解引用得到一级指针的值,最后解引用得出变量的值

int main (){
	int a =5;
	int *p;
	p=&a;
	int **c;
	int ***b;
	c=(int**)&p;
	b=(int ***)&c;
	
	
	printf("p的值=%p\np的值=%p\np的地址=%p\na的地址=%p\np的地址=%p\n" ,p,*c,*b,&a,&p);
	
	//指针的值保存的都是所指向的变量的地址。 
	printf("变量 a的地址               = %p\n",&a);
	printf("一级指针解引用的值         = %p\n",*p);
	printf("一级指针的值               = %p\n",p);
	printf("一级指针的地址             = %p\n",&p);
	printf("\n\n");
	printf("二级指针的值               = %p\n",c);
	printf("二级指针一次解引用得到的值 = %p\n",*c);
	printf("二级指针二次解引用得到的值 = %p\n",**c);
	printf("二级指针的地址             = %p\n",&c);
	printf("\n\n");
	printf("三级指针的值               = %p\n",b);
	printf("三级指针一次解引用得到的值 = %p\n",*b);
	printf("二级指针二次解引用得到的值 = %p\n",**b);
	printf("二级指针三次解引用得到的值 = %p\n",***b);
}

2.输出示例

p的值=000000000062FE14
p的值=000000000062FE14
p的地址=000000000062FE08
a的地址=000000000062FE14
p的地址=000000000062FE08
变量 a的地址              = 000000000062FE14
一级指针解引用的值         = 0000000000000005
一级指针的值              = 000000000062FE14
一级指针的地址            = 000000000062FE08


二级指针的值                = 000000000062FE08
二级指针一次解引用得到的值   = 000000000062FE14
二级指针二次解引用得到的值   = 0000000000000005
二级指针的地址              = 000000000062FE00


三级指针的值               = 000000000062FE00
三级指针一次解引用得到的值   = 000000000062FE08
二级指针二次解引用得到的值   = 000000000062FE14
二级指针三次解引用得到的值   = 0000000000000005


总结

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
评论

打赏作者

小白书舍

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值