gpt4 book ai didi

c - 在 C 中返回二维字符数组

转载 作者:太空狗 更新时间:2023-10-29 15:49:21 24 4
gpt4 key购买 nike

我把这个搞得够呛了,但我真的不明白。

我想做的是:将一个二维字符数组作为函数的输入,更改其中的值,然后返回另一个二维字符数组。

就是这样。非常简单的想法,但想法在 C 中并不容易实现。

任何让我以最简单的形式开始的想法都会受到赞赏。谢谢。

最佳答案

C 不会从函数返回数组。

您可以做几件可能足够接近的事情:

  • 您可以将数组打包到struct 中并返回。 C 从函数返回 struct 就好了。缺点是这可能会来回复制大量内存:

    struct arr {
    int arr[50][50];
    }

    struct arr function(struct arr a) {
    struct arr result;
    /* operate on a.arr[i][j]
    storing into result.arr[i][j] */
    return result;
    }
  • 您可以返回一个指向数组的指针。该指针必须指向您使用 malloc(3) 为数组分配的内存。 (或者另一个不从堆栈分配内存的内存分配原语。)

    int **function(int param[][50]) {
    int arr[][50] = malloc(50 * 50 * sizeof int);
    /* store into arr[i][j] */
    return arr;
    }
  • 您可以对传递给函数的数组指针进行操作,并修改适当的输入数组。

    void function(int param[][50]) {
    /* operate on param[i][j] directly -- destroys input */
    }
  • 您可以将参数用作“输出变量”并使用它来“返回”新数组。如果您希望调用者分配内存或者如果您想要指示成功或失败,这是最好的:

    int output[][50];

    int function(int param[][50], int &output[][50]) {
    output = malloc(50 * 50 * sizeof int);
    /* write into output[i][j] */
    return success_or_failure;
    }

    或者,调用者分配:

    int output[50][50];

    void function(int param[][50], int output[][50]) {
    /* write into output[i][j] */
    }

关于c - 在 C 中返回二维字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8144917/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com