【发布时间】:2021-03-29 12:42:01
【问题描述】:
灵感来自this 问题。我创建了这个函数:
char** char2Da (int r, int c) {
char (*p)[c] = malloc(sizeof(char[r][c]));
// come code filling 2D array
return (char**) p;
}
不幸的是,它不起作用。为什么?是否可以在 C 中返回指向 2D 数组的指针并使用上面的方法保留 [][] 符号?如果不是,为什么?我在这里错过了什么?
我知道通过创建外部数组,通过 ref 将其传递给函数来解决问题。但它有点难看,我很想把所有东西都封装在一个函数中。
请记住,我有 PHP 和 JavaScript 背景,您只需创建 arr[][] 并从函数中返回它。不用大惊小怪。
【问题讨论】:
-
在这种情况下,将指针作为 void * 指针返回,然后在调用者中将其分配给 char ( * )[c] 类型的指针。
标签: c multidimensional-array return-type function-declaration variable-length-array