-
int a = 3; // 变量名只存在编译期,操作时转换成地址数存放在寄存器中 gdb p a => 3 int *pa = &a; // 变量pa 存放 变量a的地址数,指针变量 *pa 指向 变量a地址上的内容 int *pglobal = &global; // 全局变量可以在全局任意地方改变 int (*pquadrate)(int a) = &quadrate; int s = (*pquadrate)(a); // 调用pquadrate函数并传参,返回pquadrate函数指针,找到该函数(内容) printf("%d\n",s); return 0;查看全部
-
数组当作内存地址输入的话,可以直接当作参数传进去,不用加&取址符查看全部
-
一个十六进制的数字,就可以表示四位二进制的数字查看全部
-
GDB 调试工具 命令行 gdb -help // 查看安装及及用法 gcc -g main.c -o main.out // -g 函数编译时加入gdb调试 gdb ./main.out // 运行gdb调试代码 l (list简写) // 显示执行代码 只显示部分 可以输入l或直接回车以继续显示 start // 执行代码(单行执行)默认从主函数main开始 p a(a为变量) // 打印变量a的值 n // 继续执行下一行 s // 进入执行函数中(主函数中调用的函数) bt // 查看函数堆栈 f 1 // 切换到堆栈1(执行函数1)中 q // 退出调试查看全部
-
CPU用地址总线寻址,有多少地址总线,就有多少种状态,就能寻找和使用多大的内存 32bit CPU: 2^32 bit== 4GB 64bit CPU: 2^64 bit 内存分配 -------------------------------------------- 系统内核 ------------------------------------------- 栈(暂时存储首先执行的程序状态) ------------------------------------------ 自由可分配内存(可动态分配内存) ----------------------------------------- 堆 ---------------------------------------- 数据段(声明一些全局变量或者声明一些常量) ---------------------------------------- 代码段(程序源代码编译后存放在此)查看全部
-
工具gdb内的指令格式: x/3d 0×7ffffffde14 x/:表示连续输出地址内的值 3:表示输出3个地址内的值 d:表示连续输出的值用十进制表示 0×7fffffffde14:表示三个连续地址里的第一个地址查看全部
-
变量的本质是内存,指针的本质是地址!查看全部
-
指针变量 定义int *a 地址符号&a查看全部
-
1.指针的偏移要比直接用CPU控制地址总线还要高效!<br> 2.int *p;<br> //p[4]的意义是:指针p往下移动4格(中括号:偏移计算)!与数组有不同的意义!<br> p[4]=5;//指针p往下移动4个单位空间后的指向空间赋值5;<br> 3.int array[3] 声明的数组中array既是数组名,又是数组的首地址;所以<br> int *p;<br> p=array;<br> //p[n]和array[n]有相同的数值,在功能上可以相互转化。<br> 所以:可以说,数组能做的指针都可以做到;指针能做到的数组不一定能做到!<br> 原因:array作为一个数组,目的是存储,其指向的地址没必要改变,是常量;<br> 而p作为指针,目的是操作,是变量!<br> 4.char str[10];<br> scanf("%s",str);<br> 和scanf("%s",&str);有相同的功能,也就是说:&是多余的<br> 因为str是字符型数组名,也就是字符数组的首地址(本身就是地址当然不用取址符)查看全部
-
:set num显示行号查看全部
-
指针变量 定义int *a 地址符号&a查看全部
-
交换两个变量的数值 通过指针的方法查看全部
-
p=print s=step n=next l=list bt=显示函数堆栈查看全部
-
set nu 打开行号查看全部
-
1.打印代码段的地址 查看某个函数编译后的二进制指令段在内存中代码段的地址: (gdb) p &函数名 2.打印数据段的地址 查看某个常量或全局变量在内存中数据段的地址: (gdb) p &常量名(全局变量名) 编译器会对源代码进行优化,编译后的指令顺序与我们编写代码的顺序可能不同。 编译器会将同一类型的变量声明放到一起。 64位操作系统下,指针占8个字节。查看全部
举报
0/150
提交
取消