在C程序中,我声明了一个字符缓冲区:char buffer_in[500]
; 当运行由GDB步骤此程序步骤i测试缓冲器参考与该命令:GDB调试器:char数组类型检查和打印命令
(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,如果我声明和字符数组对象像指针引用。 I & buffer_in它是数组第一个元素的地址,为什么命令x buffer_in
的输出与x &buffer_in
?相同。我认为x buffer_in
必须检查0x2e地址,所以它是错误的引用。
感谢
我建议你尝试阅读[本博客文章](https://ghost.pileborg.se/2016/08/28/the-difference-between-arrays-decaying-to-pointers-and-pointers数组/),它试图区分例如'buffer_in'和'&buffer_in'。 –