每个函数都有自己的变量空间(可用一对大花括号表示{}),参数也位于此独立空间内。第一段代码如下有main和swap两个函数,即有两个空间,两者的参数即a和b是不同的,作用范围在该函数内部。正如重名的两个人其长相、性格各不相同。
第一段函数
void swap(int a, int b);
int main()
{
int a = 5;
int b = 6;
swap(a,b);
printf("%d-%d\n",a,b);
return 0;
}
void swap(int a, int b)
{
int t = a;
a = b;
b = t;
}
关于这段代码,起初疑问在于为何调用swap函数后,输出结果依然是5-6???
后来可知main函数中遇到swap()调用函数时,main中a和b会将自己的值复制一份,传递给swap函数中的形式参数a和b。但是swap函数并不会再次返回main函数,而是完成一次任务之后便自动消失。所以main函数中a和b的先后顺序并不受其影响,输出结果为5-6。
但若将printf()调动至swap函数,输出结果为6-5。