【发布时间】:2016-11-15 13:37:46
【问题描述】:
在 C 程序中,我声明了一个字符缓冲区:char buffer_in[500];
当我在 GDB 上逐步运行该程序时,我使用以下命令测试缓冲区引用:
(gdb) ptype buffer_in
type = char [500]
(gdb) ptype &buffer_in
type = char (*)[500]
(gdb) p &buffer_in
$9 = (char (*)[500]) 0x7fffffffdb60
(gdb) x buffer_in
0x7fffffffdb60: 0x2e
(gdb) x &buffer_in
0x7fffffffdb60: 0x2e
在 C 中,如果我声明了字符数组,则对象像指针一样被引用。我 &buffer_in 它是数组的第一个元素的地址,为什么命令 x buffer_in 的输出与 x &buffer_in 相同?我认为x buffer_in 必须尝试检查 0x2e 地址,因此引用错误。
谢谢
【问题讨论】:
-
我建议您尝试阅读this blog post of mine,它会尝试区分例如
buffer_in和&buffer_in.