我从C课程编程练习,我跟着问题:
buf的地址是什么(主函数中的局部变量)?以十六进制格式(0x后跟8“数字”0-9或a-f,如0xbfff0014)或十进制格式输入答案。请注意,我们需要buf的地址,而不是其内容。
代码如下:
int main(int argc, char *argv[]) {
while(1) {
char buf[1024] = {0};
int r;
....
所以我运行了gdb
,只需将断点放在char buf[1024]
行并输入gdb
p &buf
并给我一个结果:0xbffff0f0
但是当我在这个测验中使用这个数字时,它给出了这个值不正确的结果。
我的问题是:这是(p& buf)buf变量的地址吗?或者,如果没有,为什么不呢?
练习是在VirtualBox准备好的机器上进行的,所以我认为每个人都应该拥有相同的地址
答案 0 :(得分:2)
没有正确的数字答案。地址可能会因时而异。这是你说的编程练习。以下三个陈述都给了我相同的地址。
printf ("0x%08x\n", buf);
printf ("0x%08x\n", &buf[0]);
printf ("0x%08x\n", &buf);