C语言中一级指针 、二级指针和三级指针

1.首先咱先看一级指针的用法,下面用程序进行展示:

#include<stdio.h>
int main()
{
    int datas=10;
	int *p=&datas;                          //p=&datas
	printf("datas 的地址是:%p\n",&datas);   //输出datas的地址
	printf("p保存的data的地址是:%p,内容是%d\n",p,*p);
	return 0;
}
运行结果:
datas 的地址是:000000000061FE14
p保存的data的地址是:000000000061FE14,内容是10

一级指针的用法其实是取数据(实数)的地址,那进行类比,二级指针就是取一级指针的地址,也可以表示一级指针的所指向的内容。

下面就用程序进行证明:

#include<stdio.h>
int main()
{
    int datas=10;
	int *p=&datas;                          //p=&datas
	printf("datas 的地址是:%p\n",&datas);   //输出datas的地址
	printf("p保存的data的地址是:%p,内容是%d\n",p,*p);
	
	//二级指针
	int **p1;
	p1=&p;                                  //访问一级指针
	printf("p的地址:%p\n",&p);
	printf("p1保存的地址:%p\n",p1);
    printf("*p1所指向:%p\n",*p1);
	printf("**p1的内容:%d\n",**p1);
	
	return 0;
}
运行结果:
datas 的地址是:000000000061FE14
p保存的data的地址是:000000000061FE14,内容是10
p的地址:000000000061FE08
p1保存的地址:000000000061FE08
*p1所指向:000000000061FE14
**p1的内容:10

对于刚开始看,确实有点不太好理解,自己一定要敲代码体会一下。

那对于三级指针自己是不是有点懂了,类比二级指针一级指针就可以。那接下来继续用实例证明:

#include<stdio.h>
int main()
{
	//一级指针
    int datas=10;
	int *p=&datas;                          //p=&datas
	printf("datas 的地址是:%p\n",&datas);   //输出datas的地址
	printf("p保存的data的地址是:%p,内容是%d\n",p,*p);
    puts("\n");
	//二级指针
	int **p1;
	p1=&p;                                  //访问一级指针
	printf("p的地址:%p\n",&p);
	printf("p1保存的地址:%p\n",p1);
    printf("*p1所指向:%p\n",*p1);
	printf("**p1的内容:%d\n",**p1);
	printf("\n");
	//三级指针
	int ***p2;
	p2=&p1;                                 //访问二级指针
	printf("p1的地址:%p\n",&p1);           
	printf("p2保存的地址:%p\n",p2);
    printf("*p2所指向:%p\n",*p2);
	printf("**p2所指向:%p\n",**p2);
	printf("***p2所指向的内容:%d\n",***p2);
	return 0;
}
运行结果:
​
datas 的地址是:000000000061FE14
p保存的data的地址是:000000000061FE14,内容是10


p的地址:000000000061FE08
p1保存的地址:000000000061FE08
*p1所指向:000000000061FE14
**p1的内容:10

p1的地址:000000000061FE00
p2保存的地址:000000000061FE00
*p2所指向:000000000061FE08
**p2所指向:000000000061FE14
***p2所指向的内容:10

​

这就所谓的三级指针,大家可进行实操,多多理解。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值