作者在 2011-08-23 16:34:01 发布以下内容
# include <stdio.h>
int main(void)
{
void swap(int a, int b);
int a = 2, b = 3;
swap(a, b);
printf("%d\n%d\n", a, b);
return 0;
}
void swap(int a, int b)
{
int c;
c = a;
a = b;
b = c;
}
不用编译器,你想想会输出什么?int main(void)
{
void swap(int a, int b);
int a = 2, b = 3;
swap(a, b);
printf("%d\n%d\n", a, b);
return 0;
}
void swap(int a, int b)
{
int c;
c = a;
a = b;
b = c;
}
正确答案:
2
3
你错了吗?知道问什么错了吗?
我个人看法是:
void swap(int a, int b)
{
int c;
c = a;
a = b;
b = c;
}
函数定义里面的a,b均是函数定义里面的变量,生命周期仅仅在函数定义里面,即:只在函数定义里面有效。出来void swap(int a, int b){.......}就挂掉了~{
int c;
c = a;
a = b;
b = c;
}
如果还是不能理解那么可以把函数声明改成:
void swap(int m, int n);
(当然函数声明可以不改,因为原函数声明里的a,b的声明周期仅仅在函数声明的“(”与“)”之间)。
函数定义修改为:
void swap(int m, int n)
{
int c;
c = m;
m = n;
n = c;
}
{
int c;
c = m;
m = n;
n = c;
}
那么,相信就更容易理解了~
如果你想交换两个数值。可以用一下代码:
# include <stdio.h>
int main(void)
{
void swap(int *a, int *b);////////////
int a = 2, b = 3;
swap(&a, &b);//////////////////注意
printf("%d\n%d\n", a, b);
return 0;
}
void swap(int *a, int *b)/////////////////
{
int c;
c = *a; /////
*a = *b; /////
*b = c; /////
}
输出:int main(void)
{
void swap(int *a, int *b);////////////
int a = 2, b = 3;
swap(&a, &b);//////////////////注意
printf("%d\n%d\n", a, b);
return 0;
}
void swap(int *a, int *b)/////////////////
{
int c;
c = *a; /////
*a = *b; /////
*b = c; /////
}
3
2