如何将3D数组的字符传递给函数

我有一个chars table [] [] []的3D数组,我想将它传递给void函数,以便它可以对它进行更改。 我怎样才能做到这一点?

void make(char minor[][][]); ..... char greater[20][30][50]; make(greater); 

我猜这不会奏效。

编辑:与此相关的另一个问题:假设我想创建一个复制函数将字符串复制到数组中 – 我应该如何调用函数中的strcpy?

 void copy(char (*minor)[][]) { char m[50] = "asdasdasd"; strcpy(minor[][],m); } 

如果你想传递一个数组 ,就像那个数组一样,而不是你用malloc动态分配的数组 (这将是几个指针级别,而不是真正的数组),下面的任何函数原型都可以工作:

  • void make(char minor[20][30][50])
  • void make(char minor[][30][50])
  • void make(char (*minor)[30][50])

原因是你不能拥有像void make(char ***minor)这样的东西,因为minor只会衰变成指向数组数组的指针,所以它不会多次衰减。

将指针传递给二维数组:

 void make(char (*minor)[30][50]); ... char greater[20][30][50]; make(greater); 

编辑:不是一个好方法,看评论!

你将不得不传递指针和数组的大小,

这里看看这篇文章中的Pass多维数组