以下是引用wangchengbin在2012-7-5 14:35:21的发言:
下面这代码解释不通,为什么程序到了红色部分结果是5呢?
而int s=0的时候已经在main函数里是局部变量啊. 我认为是0呢.
#include
#include"stdio.h"
int a=2;
int f(int *a)
{
return (*a)++;
}
void main()
{
int s=0;
{
int a=5;
s+=f(&a);
}
printf("%d\n",s);
s+=f(&a);
printf("%d\n",s);
}
你把函数f()的代码嵌入到调用处看看就知道了。
#include
#include"stdio.h"
int a=2;
int f(int *a)
{
return (*a)++;
}
void main()
{
int s=0;
{
int a=5;
s+=f(*(&a)++);
}
printf("%d\n",s);
s+=f(&a);
printf("%d\n",s);
}
你上面红色的语句,实际上等价于下面红色的语句,结果如何,是很容易看得出的。
[
本帖最后由 TonyDeng 于 2012-7-6 20:20 编辑 ]