C语言数组元素交换

代码 

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;
}

C语言数组元素交换_第1张图片

误区

注意,不要尝试换两个指针的地址。像这样

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;
}

结果没有改变 

C语言数组元素交换_第2张图片

但是调试的过程是有改变的

我这样做,就相当于把a[0]和a[1]的地址调换,但是数组的地址一开始已分配好,所以不能再改变。具体请看这个提问。

 

你可能感兴趣的:(C,c语言)