buf的地址是什么(主函数中的局部变量)?

时间:2014-11-04 18:10:07

标签: c pointers gdb memory-address

我从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准备好的机器上进行的,所以我认为每个人都应该拥有相同的地址

1 个答案:

答案 0 :(得分:2)

没有正确的数字答案。地址可能会因时而异。这是你说的编程练习。以下三个陈述都给了我相同的地址。

printf ("0x%08x\n", buf);
printf ("0x%08x\n", &buf[0]);
printf ("0x%08x\n", &buf);