交换两个数,这在C语言中是个很简单的问题,比如我们在谭浩强的那本C语言教材里,可以看到
void swap(int a, int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
原理就是借助一个中间值存储第一个值,然后进行数值互换,但是这个程序存在一个问题,因为这个swap函数的两个参数进行的是值传递,如果在另外一个函数里去调用这个函数,会出现无法将两个数互换的结果,比如下面这段程序
int main(int argc, char *argv[]) {
int numb1 = 3, numb2 = 6;
swap(numb1, numb2);
printf("%d, %d", numb1, numb2);
}
输出的结果是3,6,而不是想象中的交换后的6,3,那么正确的写法应该是怎样的呢?指针能够解决这个问题
void swap(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
然后在需要调用的地方
swap(&numb1, &numb2);
注意,函数的参数用了&取地址符号,也就是传递的是两个数的地址,