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

Ger*_*rov 2 c arrays pointers char

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

void make(char minor[][][]);

.....
char greater[20][30][50];
make(greater);
Run Code Online (Sandbox Code Playgroud)

我想这不会奏效.

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

void copy(char (*minor)[][])

{ char m[50] = "asdasdasd"; 
strcpy(minor[][],m);
}
Run Code Online (Sandbox Code Playgroud)

Aus*_*oke 7

如果你想传递一个数组,就像那个数组一样,而不是你动态分配的数组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只会衰变成指向数组数组的指针,所以它不会多次腐烂.

  • @Dave:他们三个完全相同. (4认同)