我目前正在准备一本书,并且正在学习使用GDB检查C语言中的指针。在书中,当您检查指针时,输出如下:
(gdb) x/xw pointer
0xbffff7e0: 0x6c6c6548
(gdb) x/s pointer
0xbffff7e0: "Hello, world!\n"
(gdb)
但是当我自己做时,我得到以下输出:
(gdb) x/xw pointer
0x7ffff7de59a0 <_dl_fini>: 0xe5894855
(gdb) x/s pointer
0x7ffff7de59a0 <_dl_fini>: "UH\211\345AWAVAUATSH\203\354(L\213%\250\177!"
我的问题是:为什么我得到如此不同的输出。 我知道我做错了什么,但这是什么?
谢谢大家。
源代码:
#include <stdio.h>
#include <string.h>
int main() {
char str[20];
char *pointer;
char *pointer2;
strcpy(str, "Hello, world!\n");
pointer=str;
printf(pointer);
pointer2=pointer+2;
printf(pointer2);
strcpy(pointer2, "y you guuuys!\n");
printf(pointer);
}
答案 0 :(得分:-1)
我怀疑您的“错误”是,“ x / s指针”返回了指针所指向的“字符串”(请记住:字符串以\ 0终止)。 但是,在这种情况下,您的指针不是字符串,这就是为什么您会得到奇怪的“字符串”的原因