【发布时间】:2012-12-01 15:50:09
【问题描述】:
我有以下代码,其中我编写了两个函数。两者都旨在产生相同的输出。但是具有循环的函数g() 产生的输出与我预期的不同,如下所示。
#include <stdio.h>
struct S { int i; };
void f(void)
{
struct S *p;
int i = 0;
p = &((struct S) {i});
printf("%p\n", p);
i++;
p = &((struct S) {i});
printf("%p\n", p);
}
void g(void)
{
struct S *p;
for (int i = 0; i < 2; i++)
{
p = &((struct S) {i});
printf("%p\n", p);
}
}
int main()
{
printf("Calling function f()\n");
f();
printf("\nCalling function g()\n");
g();
}
输出:
Calling function f()
0023ff20
0023ff24
Calling function g()
0023ff24
0023ff24
p的地址怎么和g()调用的时候一样?
【问题讨论】:
标签: c gcc c99 compound-literals