在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'。 –