c - 返回 int array[] 或指向 int array[] 的指针返回到 C 中调用例程的函数

标签 c arrays function pointers return

如何使该函数返回 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/

相关文章:

c - 如何获取标准输入的 UTF-8 编码值?

c - 在不知道维度的情况下在 C 中创建指向多维数组的指针

PHP : checkboxes and name issue

javascript - 我对javascript中多维数组的理解是否正确?

Java健身函数

sql - 返回表的 PostgreSQL 函数

azure - 如何在服务总线队列触发函数中将服务总线消息移至死信

c - C 编程语言中的严格交替(来自 Tanenbaum)

c - 未知转换类型字符 `"'

php: in_array() 与阿拉伯语