C编程的新手,以及尝试创建一个void函数来交换两个变量的值.当我希望交换两个整数变量的值时,以下函数可以正常工作,假设a = 11,b = 33,函数调用swap(&a,&b):
void swap(int *a, int *b) {
*a += *b;
*b = *a - *b;
*a -= *b;
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用数组的两个元素执行此操作时,它对交换(&a [0],&a [2])无法正常工作.但它确实可以使用以下功能:
void swap(int i, int j, int a[]) {
int h = a[i];
a[i] = a[j];
a[j] = h;
}
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么第一个单变量工作而不是数组元素?当然有一个非常好的解释,我在这里失踪.欢迎所有帮助,谢谢!
这是完整的程序:
#include <stdio.h>
#include <stdlib.h>
void swap(int *a, int *b) {
*a += *b;
*b = *a - *b;
*a -= *b;
}
void selectionSort(int a[], int len) {
int i, j, min;
for …Run Code Online (Sandbox Code Playgroud)