【发布时间】:2010-03-15 14:29:28
【问题描述】:
在每次循环迭代中,变量 j 被一次又一次地声明。那为什么它的地址不变?
- 不应该每次都给它一些随机地址吗?
- 此编译器是否依赖?
#include<stdio.h>
#include<malloc.h>
int main()
{
int i=3;
while (i--)
{
int j;
printf("%p\n", &j);
}
return 0;
}
测试运行:-
shadyabhi@shadyabhi-desktop:~/c$ gcc test.c
shadyabhi@shadyabhi-desktop:~/c$ ./a.out
0x7fffc0b8e138
0x7fffc0b8e138
0x7fffc0b8e138
shadyabhi@shadyabhi-desktop:~/c$
【问题讨论】:
-
我错误地发布了错误的问题..我的错..对不起..我已经更新了问题
-
@Gardener:它会编译得很好。
void *将自动编辑为cast。 -
您现在已更改问题。您是否对其进行了测试以查看您的原始断言是否仍然正确?它甚至不是有效的代码,所以答案几乎肯定是否定的。
-
@nvl:从 void* 隐式转换为 int!?我希望不会。
-
也许我们应该等到这个问题稳定后再发表评论!? ;)