C语言基础语法第六章指针 demo19_二级指针认知
二级(多级)指针;
1.写法intp ;int*p
2.二级(多级)指针保存的是指针变量的地址
3.二级指针不能简单粗暴指向二维数组
#include <stdio.h>
//二级(多级)指针;
//1.写法int**p ;int***p
//2.二级(多级)指针保存的是指针变量的地址
//3.二级指针不能简单粗暴指向二维数组
int main()
{
int data = 100;
int *p = &data;
printf("data的地址是:%p\n",&data);
printf("p保存data的地址:%p,内容是%d\n",p,*p);
printf("p本身的地址是:%p\n",&p);
int *pp = &p;
printf("pp保存p的地址是:%p\n",pp);
printf("*pp是%p\n",*pp);//*pp取pp保存的地址的对应值,就是p的值,而p的值是data的地址 ;但取不到data的值
//所以就要引入二级(多级)指针 取data的值100
int **p2;//定义一个二级指针
p2 = &p;
printf("p2保存p的地址:%p\n",p2);
printf("*p2是%p\n",*p2);
printf("**p2来访问data:%d\n",**p2);//先取p2保存地址对应的值也就是p的值,p的值是data的地址,再取data地址对应的值也就是100
int ***p3;
p3 = &p2;
printf("p3保存p2的地址:%p\n",p3);
printf("*p3是%p\n",*p3);
printf("***p3来访问data:%d\n",***p3);
return 0;
}
int main()
{
int data=100;
int *p = &data;
printf("data的地址是:%p\n",&data);//data的地址是:000000000061FE0C
printf("p保存的data的地址是:%p,内容是:%d\n",p,*p);//p保存的data的地址是:000000000061FE0C,内容是:100
printf("p本身的地址是:%p\n",&p);//p本身的地址是:000000000061FE00
int *pp=&p;
printf("pp保存的p的地址是:%p\n",pp);//pp保存的p的地址是:000000000061FE00
printf("取pp保存的p的地址对应值是:%p\n",*pp);//取pp保存的p的地址对应值是:000000000061FE0C
//可以看到取P对应的地址的值就是p地址对应的data的地址 但是取不到data的值
//所以这里就要用到二级或(多级指针)
int **p2;//定义一个二级指针
p2=&p;
printf("p2保存p的地址是:%p\n",p2);//p2保存p的地址是:000000000061FE00
printf("*p2是:%p\n",*p2);//*p2是:000000000061FE0C
printf("**p2是:%d\n",**p2);//**p2是:100
int ***p3;//定义一个三级指针
p3=&p2;
printf("p3保存p2的地址是:%p\n",p3);//p3保存p2的地址是:000000000061FDF8
printf("*p3是:%p\n",*p3);//*p3是:000000000061FE00
printf("**p3是:%p\n",**p3);//**p3是:000000000061FE0C
printf("***p3是:%d\n",***p3);//***p3是:100
return 0;
}