如何使该函数返回 int array[4]
或指向 *array[4]
的指针?
在该函数范围内通过指针和冒泡排序按升序计算这个包含 4 个整数的数组,然后返回 main 进行打印。
我可以在此函数的范围内打印该数组,但我想知道我可以将其传递回 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)
最佳答案
如果您想按升序对四个单独的整数进行排序,并传递它们的地址,则需要确保交换指针。这是使用正确的指针算法修改的代码:
#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;
}
Output :
i1 = 125, i2 = 100, i3 = 10, i4 = 50
i1 = 10, i2 = 50, i3 = 100, i4 = 125
关于c - 返回 int array[] 或指向 int array[] 的指针返回到 C 中调用例程的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41978575/