我对这段代码进行了一些处理,我需要一个交换函数来获取像 a[j] 这样的数组。
我如何需要将这样的东西传输到另一个函数?
#include <stdio.h>
void bubble_sort(int *a, int n) {
int i, j;
for (i = 0; i < n; i++) {
for (j = 0; j < n - i - 1; j++) {
if (a[j] > a[j + 1]) swap(&a[j], &a[j + 1]);
}
}
}
这是代码,那么我如何用a[j]调用swap函数呢?我需要像这样调用函数吗?
int swap (int a[],int b[])
int swap (int *a,int *b)
通过第二次通话,我确信它会起作用,对吗?但是我怎样才能像第一个例子一样调用这个函数呢?
#define MAX 100
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
return 0;
}
void bubble_sort(int a[], int n) {
int i;
for(i=0;i<n;i++)
{
if(a[i]<a[i+1])
swap(a[i],a[i+1]);
}
return 0;
}
int main()
{
int a[4]={1,2,3,0};
int n=4;
bubble_sort(a,n);
for(int i=0;i<n;i++)
{
printf("%d",a[i]);
}
}
我使用了该代码段错误(核心转储)
最佳答案
你的函数需要像这样使用2个指针:
void swap(int * const a, int * const b) {
int temp = *a;
*a = *b;
*b = temp;
}
int swap (int a[], int b[]);
也可以工作,因为在函数参数 int* a
和 int a[]
是同一件事。但这很令人困惑 - 它意味着指针指向一个数组,而您只想交换 2 个整数。
以下是您可以通过其他方式做到这一点的方法:
void swap(int a[], int b[]) {
int temp = *a;
*a = *b;
*b = temp;
}
关于用数组调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60026351/