要交换两个变量中的值,如何做?
temp = a;
a = b;
b = temp;
写成函数如何?
/*
Description:
swap two integers, try call by value???
Author: Liutong Xu
*/
#include<stdio.h>
void swap(int a,int b);
int main()
{
int a = 12;
int b = 23;
int temp;
// temp = a;
// a = b;
// b = temp;
swap(a,b);
printf("a = %d, b = %d.\n", a, b);
return 0;
}
void swap(int a,int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
结果呢?
a = 12, b = 23.
调试一下。。。
还记得scanf里面的&吗?
函数只有一个返回值,想返回多个怎么办?
解决方法:
用变量的地址去访问变量。
参见:
改写程序:
/*
Description:
swap two integers, by value???
Author: Liutong Xu
*/
#include<stdio.h>
void swap(int *ap,int *bp);
int main()
{
int a = 12;
int b = 23;
printf("\nin main: a's address is %p, value is %d\n",&a,a);
printf("in main: b's address is %p, value is %d\n",&b,b);
swap(&a,&b);
printf("\nin main: after calling swap:\n");
printf("in main: a's address is %p, value is %d\n",&a,a);
printf("in main: b's address is %p, value is %d\n",&b,b);
return 0;
}
void swap(int *ap,int *bp)
{
int temp;
printf("\nin swap: ap's address is %p, points to %p, value is %d\n",&ap,ap,*ap);
printf("in swap: bp's address is %p, points to %p, value is %d\n",&bp,bp,*bp);
temp = *ap;
*ap = *bp;
*bp = temp;
printf("in swap: after swapping:\n");
printf("in swap: ap's address is %p, points to %p, value is %d\n",&ap,ap,*ap);
printf("in swap: bp's address is %p, points to %p, value is %d\n",&bp,bp,*bp);
}
而结果为:
in main: a's address is 0xffb007d4, value is 12
in main: b's address is 0xffb007d0, value is 23
in swap: ap's address is 0xffb00798, points to 0xffb007d4, value is 12
in swap: bp's address is 0xffb00794, points to 0xffb007d0, value is 23
in swap: after swapping:
in swap: ap's address is 0xffb00798, points to 0xffb007d4, value is 23
in swap: bp's address is 0xffb00794, points to 0xffb007d0, value is 12
in main: after calling swap:
in main: a's address is 0xffb007d4, value is 23
in main: b's address is 0xffb007d0, value is 12