18、指向指针的指针

1、指向指针的指针

指向指针的指针,从字面上理解,就是一个指针存放另一个指针的内存地址

2、案例
2.1、代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include<stdio.h>
int main()
{
// 整形变量 a
int a = 10;
// 存放整形的指针变量
int *p;
// 存放整形指针的指针变量
int **q;

// 指针p指向变量a的内存地址
p = &a;
printf("=============打印变量a的内存地址===============\n");
printf("&a=%p\n",&a);
printf("p=%p\n",p);

// 指针q指向指针变量p的内存地址
printf("=============打印指针变量p的内存地址===========\n");
q = &p;
printf("&p=%p\n",&p);
printf("q=%p\n",q);

printf("=============打印变量a值的几种方式=============\n");
printf("a=%d\n",a);
printf("*p=%d\n",*p);
printf("**q=%d\n",**q);
return 0;
}
2.2、运行结果

运行结果

1.3、执行过程的内存分布

运行结果

3、总结
  • 在操作指针时,如*p 则是代表获取对应内存地址的内容
  • 使用指向指针的指针,虽然也可以修改变量的地址,但从上面的内存分布来看,它加大了理解难度,应尽量少用