变量求值
以下程序的输出结果是多少呢?
int a=2;
int f(int *a)
{
return(*a)++;
}
void main()
{
int s=0;
{
int a=5;
s+=f(&a);
}
s+=f(&a);
printf("%d %d\n",a,s);
}
主函数中的一对大括号是什么意思呢?
在主函数中的a与全局变量a应该不一样吧?第一次调用f传进去的事哪个a啊 第二次呢?
[解决办法]
#include <stdio.h>int a = 2; /* 全局变量a初始化为2 */int f(int* a){ return (*a)++;}int main(int argc, char* argv[]){ int s = 0; { int a = 5; /* 局部块变量a初始化为2 */ s += f(&a); /* s加上局部块变量a的值2,然后局部块变量a自加1后为6 */ } s += f(&a); /* s加上全局变量a的值2,然后全局变量a自加1后为3 */ printf("%d %d\n", a, s); return 0;}
[解决办法]
{
int a=5;
s+=f(&a);
}
这里是 s=0+5 其中f(&a) 传进去的是a
在函数中return (*a)++ 即return 5 然后a=6(局部变量)
s += f(&a); 传进去的是全局变量a(a=2) 所以s=5+2
[解决办法]
int a=2;int f(int *b) //形参参数可以随便定义吧,改成b就好懂了{ return(*b)++;}void main(){ int s=0; { //不加括号试试 int a=5; s+=f(&a); //此处 a= 5 }//作用域结束 s+=f(&a); //此处a = 2 printf("%d %d\n",a,s);}