程序如下:
#includevoid Swap(int x,int y); int main(){ int a,b; printf("Please enter a,b: "); scanf("%d,%d",&a,&b); printf("Before Swap:a=%d,b=%dn",a,b); Swap(a,b); printf("After Swap:a=%d,b=%dn",a,b); return 0; } void Swap(int x,int y){ int t; t=x; x=y; y=t; }
输出:
原因:形参x和y的值发生改变,并不能引起实参a和b的值发生改变。
可以进一步打印一下Swap中x和y:稍微修改一下Swap()函数。
#includevoid Swap(int x,int y); int main(){ int a,b; printf("Please enter a,b: "); scanf("%d,%d",&a,&b); printf("Before Swap:a=%d,b=%dn",a,b); Swap(a,b); printf("After Swap:a=%d,b=%dn",a,b); return 0; } void Swap(int x,int y){ int t; printf("first:x=%d, y=%dn",x,y); t=x; x=y; y=t; printf("--------------------n"); printf("second: x=%d, y=%dn",x,y); }
输出:
//利用指针变量作函数参数,执行:交换两数 #includevoid Swap(int *x,int *y); int main(){ int a,b; printf("Please enter a,b: "); scanf("%d,%d",&a,&b); printf("n"); printf("Before Swap: a=%d,b=%dn",a,b); printf("n"); Swap(&a,&b);//注意这里填的。 printf("After Swap: a=%d,b=%dn",a,b); return 0; } void Swap(int *x,int *y){ int t; t=*x; //注意这里。 *x=*y; *y=t; }
输出:



