最近用gdb的时候,忽然有写方面不明白,思索一番,不知对否。
源代码:
编译,调试:
先看print语句:
print a[3] #打印a[3]的值,
print &a[3] #打印a[3]的地址
print a+3 #同上
print &(a+3) #打印a+3指针所在的地址,显示不存在
x a[3] #访问a[3]值所代表的内存,即打印a[3]值代表内存里面的值
x a+3 #访问指针a+3代表内存里面的值,即 4
x &a[3] #同上
x &(a+3) 访问a+3指针所在的地址,不存在
总结: print 就是打印给定变量(参数是什么,就打印什么),x打印给定变量代表的内存地址里的值(即x后面的参数 是地址值,打印的是地址所在内存单元的值)。比如要打印变量i的值:
print i
x &i
GDB在操作内存时,使用的是C的语法。