样例:
#include <stdio.h>
// 多级指针的意义是什么啊 (C的框架,再去说,比较时候)
void test1(int ** n) {}
int main() {
// 在真实开发过程中,最多三级指针 int ***
int num = 999;
// 一级指针 *,指针本身有自己的内存地址
// 1、&num代表num的内存地址,取出num的内存地址给 指针num_p =》 int * num_p = #
// 2、一级指针定义:int * A ,代表是指针变量A,所以num_p是指针,
// 3、单独的 * + 指针 代表指针的值(*num_p),而类型+ * +变量 代表定义指针int * num_p。
// 4、*num_p代表对指针num_p进行取值,也就是*num_p对&num取值为,也就是num的值,
int * num_p = #
//二级指针**
//1、定义:int ** B
//2、指针num_p_p等于&num_p,而*num_p_p相当于对&num_p取值,也就是指针num_p的值,他的值指向&num,是个内存地址
int ** num_p_p = &num_p; // 取出num_p的内存地址给 num_p_p(二级指针)
//三级指针***
//1、定义:int *** C
//2、指针num_ppp等于,相当于值指向内存地址:&num_p_p
//3、*num_ppp相当于对&num_p_p取值,也就是num_p_p的值,也就是&num_p,是一个内存地址,是num_p的内存地址。
//4、**num_ppp相当于取&num_p_p的值的值,&num_p_p的值为&num_p,是num_p的内存地址,
// 相当于再取&num_p的值也就是&num,也是内存地址,是num的内存地址
//5、***num_ppp相当于取&num_p_p的值的值的值,&num_p_p的值为&num_p,是num_p的内存地址,
// 第二个* 相当于再取&num_p的值也就是&num,也是内存地址,是num的内存地址
// 第三个* 相当于再对&num取值,&num也就是num的内存地址,对他取值就是num本身的值。
//指针本身自己有自己的内存地址
int *** num_ppp = &num_p_p;
printf("%p %p %p %p %p \n", num,num_p,&num_p, num_p_p,num_ppp);
printf("%d %d %d %p \n", *num_p, *num_p_p,**num_p_p ,*num_ppp);
printf("num_p的值是%d num_p_p的值是%d s %d \n", *num_p, *num_p_p,*num_ppp);
printf("%p num_p的值是%p num_p_p的值是%p\n",num, num_p, num_p_p);
// num_p的值是:0061FF18, num_p_p的值是:0061FF14
// 我先输出 999
printf("获取最终的值:%d\n", **num_p_p);
printf("获取最终的值:%d\n", *** num_ppp);
// 多级指针的意义是什么啊
test1(num_p_p);
// printf("num_p的自己的内存地址是:%p, num_p_p自己的额内存地址是:%p\n", &num_p, &num_p_p);
// *num_ppp 取的是什么?取的是&num_p_p的值,也就是指针num_p_p的值,也就是 &num_p
return 0;
}
网友评论