多级指针的理解
前言
通过一段代码了解多级指针
`
一、指针是什么?
指针也是一个变量,是变量就有自己的地址,所以指针也有自己的地址,这点很重要在下面的例子中,不过它的值保存的是另外一个变量的地址。这点和普通变量的值不同,普通变量的值保存的只是一个数值。
二、使用步骤
(可以先看下面的代码在来看这段话!!)二级指针指向一级指针(也就是保存的一级指针的地址),指向一级指针的地址,通过一次解引用得到一级指针的值(也就是保存的变量的地址)在次解引用则可以得到变量的值
同理三级指针指向二级指针(三级指针也就是保存的二级指针的地址),通过一次解引用得到二级指针的值,这个值是一级指针的地址,再次解引用得到一级指针的值,最后解引用得出变量的值
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