- 课程名称:Linux C语言指针与内存
- 课程链接:Linux C语言指针与内存-慕课网 (imooc.com)
- 章节名称:
- 第4章:指针与内存
- 5-1 数组声明的内存排列
- 5-2 指针运算
- 5-3 字符数组和指针字符串
- 5-4 字符数组的深入理解
- 讲师姓名:
DavidChin
- 第4章:指针与内存
- 时间:2023-02-19 23:30
课程内容
-
代码中定义2个整型变量,一个长度为2的整型数组,将首个定义变量的地址值赋值给一个指针变量
-
有了这个指针变量,就几乎可以访问程序中定义的所有变量
-
访问所有变量代码
-
for (int i = 0; i < 6; i++) { printf("*p = %d\n", *p); p++; } p = &a; for (int i = 0; i < 6; i++) { printf("p[%d]\n", p[i]);// 此处不会修改指针变量指向的地址值 }
-
在GDB中:p * 0x7fffffffde18
可以把该地址中的值打印出来 -
程序在给变量分配内存地址时,是把同类型的变量分配的地址是在一起的
- 如定义两个整型变量,其地址内存地址很可能是连续的
- 如果定义一个整型变量,再定义一个浮点类型变量,再定义一个整型变量,那么两个整型变量地址连续,之后再分配浮点类型变量
-
在GDB中根据地址值快速输出变量值方法
x/3d 0x7fffffffde1c
:x表示要输出内存的值,3表示从地址值开始输出三个变量值,d是以十进制形式输出变量值,最后为开始地址值
-
-
学习心得
GDB的输出变量地址方法很好用,但如果程序不复杂,也可以直接打印出变量地址