代码
void swap_element(int *a, int *b) {
int tmp = *a;
*a = *b;
*b = tmp;
}
int main(){
int a[2] = { 1,2 };
swap_element(a+0, a+1);
printf("a[0]=%d,a[1]=%d\n", a[0], a[1]);
return 0;
}
误区
注意,不要尝试换两个指针的地址。像这样
void swap_element2(int *a, int *b) {
int *tmp = a;
a = b;
b = tmp;
}
int main(){
int a[2] = { 1,2 };
swap_element2(a+0, a+1);
printf("a[0]=%d,a[1]=%d\n", a[0], a[1]);
return 0;
}
结果没有改变
但是调试的过程是有改变的
我这样做,就相当于把a[0]和a[1]的地址调换,但是数组的地址一开始已分配好,所以不能再改变。具体请看这个提问。