如何让此函数返回int array[4]
或指向*array[4]
的指针?
具有4个整数的数组在此函数范围内通过指针和冒泡排序按升序计算,然后返回到主要打印。
我可以在这个功能的范围内打印这个数组,但是我想知道我可以把它传回main(调用函数)吗?
void sort4(int *n1, int *n2, int *n3, int *n4)
如果我将其更改为
int X[4] sort4(int *n1, int *n2, int *n3, int *n4)
不起作用。这也是
int *X[4] sort4(int *n1, int *n2, int *n3, int *n4)
答案 0 :(得分:0)
如果您想按升序排序四个单独的整数,并且您传递了他们的地址,则需要确保交换指针。这是用正确的指针算法修改的代码:
#include <stdio.h>
void sort4(int *n1, int *n2, int *n3, int *n4)
{
int *Arr[] = { n1, n2, n3, n4 };
int **i = Arr, **j, temp;
int ** const arrayEnd = Arr + 4;
for (; i != arrayEnd - 1; i++)
for (j = i + 1; j != arrayEnd; j++)
if (**i > **j) {
temp = **i;
**i = **j;
**j = temp;
}
}
int main(void)
{
int i1 = 125;
int i2 = 100;
int i3 = 10;
int i4 = 50;
printf("i1 = %i, i2 = %i, i3 = %i, i4 = %i\n", i1, i2, i3, i4);
sort4(&i1, &i2, &i3, &i4);
printf("i1 = %i, i2 = %i, i3 = %i, i4 = %i\n", i1, i2, i3, i4);
return 0;
}
i1 = 125,i2 = 100,i3 = 10,i4 = 50
i1 = 10,i2 = 50,i3 = 100,i4 = 125