将int array []或指向int array []的指针返回给C中的调用例程的函数

时间:2017-02-01 11:23:59

标签: c arrays function pointers return

如何让此函数返回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)

1 个答案:

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

Output

  

i1 = 125,i2 = 100,i3 = 10,i4 = 50
  i1 = 10,i2 = 50,i3 = 100,i4 = 125