加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在C中返回2D char数组

发布时间:2020-12-16 10:20:39 所属栏目:百科 来源:网络整理
导读:我搞砸了这个,但我真的不明白. 这是我想要做的:将一个2D char数组作为函数的输入,更改其中的值,然后返回另一个2D char数组. 而已.相当简单的想法,但想法不能在C中轻松工作. 任何想让我以最简单的形式开始的想法都值得赞赏.谢谢. 解决方法 C不会从函数返回数
我搞砸了这个,但我真的不明白.

这是我想要做的:将一个2D char数组作为函数的输入,更改其中的值,然后返回另一个2D char数组.

而已.相当简单的想法,但想法不能在C中轻松工作.

任何想让我以最简单的形式开始的想法都值得赞赏.谢谢.

解决方法

C不会从函数返回数组.

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

>您可以在struct中打包数组并返回该数组. C将从函数中返回结构.缺点是这可能会有很多内存来回复制:

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] */
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读