究竟有多少个地址在保存这个变量?

saishow 2010-11-13 02:09:59
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a = 5;
int *b =&a;
int **c = &b;
printf("a = %d\tb = %d\tc = %d\n",a,*b,**c);
while(getchar()!=EOF)
{
a++;
printf("a = %d\tb = %d\tc = %d\n",a,*b,**c);
}
printf("Hello world!\n");
return 0;
}

按道理只有3个分别是a b c 但是我用内存工具却发现4个地址当作存放着a的值。求解。
...全文
219 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
saishow 2010-11-16
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 arong1234 的回复:]

a变量本身一个
printf时5被当作参数传了3次,因此又有三个拷贝
总共是四个。楼主需要了解“传值调用”的真谛
引用楼主 saishow 的回复:
C/C++ code
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a = 5;
int *b =&amp;a;
int **c = &amp;……
[/Quote]

哦对,还有一个printf函数。
失落的凡凡 2010-11-15
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 arong1234 的回复:]

a变量本身一个
printf时5被当作参数传了3次,因此又有三个拷贝
总共是四个。楼主需要了解“传值调用”的真谛
引用楼主 saishow 的回复:
C/C++ code
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a = 5;
int *b =&amp;a;
int **c = &amp;……
[/Quote]

原来是这样……
ln_cheng 2010-11-15
  • 打赏
  • 举报
回复
楼主要看地址可以这样:
printf("%p\n", &a);
或者
printf("0x%08x\n", &a);
时间一粒 2010-11-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 athenacle_ 的回复:]
我也觉得一个保存5,另两个保存指针。~这个,大概是由编译器定义的把~
LZ用的是什么编译器?
我VC6.0经过动态调试发现只有两个指针,1个数的啊~
[/Quote]
我觉得这个应该是编译器自己定义的,不然要指针干嘛?
xiaohuh421 2010-11-14
  • 打赏
  • 举报
回复
楼主不知道CE搜出来的东西不一定都是正确的吗?
你随便搜索,可能为5的有几万个都有可能,就像找游戏中人物的血蓝一样,可能找到很多个,最后过虑排除掉一些不正确的
Athenacle_ 2010-11-14
  • 打赏
  • 举报
回复
现在我想问下LZ,你是用内存工具看“内存”,还是看“这个进程的内存”?
arong1234 2010-11-14
  • 打赏
  • 举报
回复
a变量本身一个
printf时5被当作参数传了3次,因此又有三个拷贝
总共是四个。楼主需要了解“传值调用”的真谛
[Quote=引用楼主 saishow 的回复:]
C/C++ code
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a = 5;
int *b =&a;
int **c = &b;
printf("a = %d\tb = %d\tc = %d\n",a,*b,**c);
while(getchar()!=E……
[/Quote]
xspace_time 2010-11-14
  • 打赏
  • 举报
回复
用codeblocks和 c++6.0试了下,只有上面一行,没有=6的
a707000646 2010-11-14
  • 打赏
  • 举报
回复
调试的话是编译器自己定义的
但是从你的代码看的话
一级指针保存的是5
然后二级指针保存的是一级指针的地址
代码没有什么问题的
dfatfat 2010-11-14
  • 打赏
  • 举报
回复
同上回复

Athenacle_ 2010-11-13
  • 打赏
  • 举报
回复
我也觉得一个保存5,另两个保存指针。~这个,大概是由编译器定义的把~
LZ用的是什么编译器?
我VC6.0经过动态调试发现只有两个指针,1个数的啊~
liutengfeigo 2010-11-13
  • 打赏
  • 举报
回复
还没到你这境界啊,不懂
saishow 2010-11-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 snowwhite1 的回复:]

应该只有一个。LZ用的什么内存软件?
[/Quote]
随便我用的CheatEngine5.6。用金山游侠也可以。
luciferisnotsatan 2010-11-13
  • 打赏
  • 举报
回复
一个保存5,另两个保存指针。
flysnowhite 2010-11-13
  • 打赏
  • 举报
回复
应该只有一个。LZ用的什么内存软件?
vanchristin 2010-11-13
  • 打赏
  • 举报
回复
为啥子我觉得应该只有一个地址保存a的值。。。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧