#include <stdio.h>
//C语言指针和指针的指针,指针与多级指针
int main() {
int a = 1314;//1.定义一个int类型为a的变量赋值为1314
int* a1 = &a;//通过一个*号定义a1为指针变量,通过&号取a的内存地址和int类型的字节大小赋值给a1作为指针,(这里相当于是a1指向了a)
int** a2 = &a1;//通过两个*号定义a2为int多级指针类型获取a1的指针的指针(这里相当于*a2指向了a1,**a2指向了a)说明每个指针类型都有自己的地址
int*** a3 = &a2;//(这里相当于*a3指向了a2,**a3指向了a1,***a3指向了a)
int**** a4 = &a3;//(这里相当于*a4指向了a3,**a4指向了a2,***a4指向了a1,****a4指向了a)
int***** a5 = &a4;//(这里相当于*a5指向了a4,**a5指向了a3,***a5指向了a2,****a5指向了a1,*****a5指向了a)
printf("a5=%d\na4=%d\na3=%d\na2=%d\na1=%d\n", *****a5,****a4,***a3,**a2,*a1);//这里都指向了a
printf("*****a5=%p\n****a5=%p\n***a5=%p\n**a5=%p\n*a5=%p\n", *****a5, ****a5, ***a5, **a5, *a5);//逐个*号减少输出,对应指向了a,a1,a2,a3,a4,的独立地址
return 0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/e1bf0ce41680060c491fb0593deb0111.jpeg)