宣言後、割り当てることはできませんが、使用しますstrcpy()
char a[250][250][250];
strcpy(a[0][1],"0");
または宣言時に割り当てます。
char a[250][250][250] = {"0","2"};
char a[][250][250] = {"0","2"};
または、単一の文字を割り当てたい場合。
a[i][j][k] = '0';
ここで、i、j、k は 250 未満の任意の値です
Cで3D配列を宣言および初期化する方法
一般a[3][4][2]
に、次のように表示できる 3 次元配列です。
a[3][4][2]
: 3 つの 2 次元配列で構成され、各 2 次元配列は 4 行 2 列で構成されます。次のように宣言できます。
char a[3][4][2] = {
{ //oth 2-D array
{"0"},
{"1"},
{"2"},
{"4"}
},
{ //1th 2-D Array
{"0"},
{"1"},
{"2"},
{"4"}
},
{ //2nd 2-D array
{"0"},
{"1"},
{"2"},
{"4"}
},
};
注: "1" は 2 つの文字を意味し、null ('\0') 文字から 1 つ追加されます。
整数配列の場合:
int a[3][2][3]=
{
{ //oth 2-D array, consists of 2-rows and 3-cols
{11, 12, 13},
{17, 18, 19}
},
{//1th 2-D array, consists of 2-rows and 3-cols
{21, 22, 23},
{27, 28, 29}
},
{//2th 2-D array, consists of 2-rows and 3-cols
{31, 32, 33},
{37, 38, 39}
},
};
理解するためのリンク
2 番目のエラー:
これa[i][j][max]
に char は文字列ではなく割り当てることができるので、
a[i][j][max] = '0' ; // is correct expression
しかし
a[i][j][max] = "0"; // is not correct, wrong
WhozCraigのコメントを読んでください。スタックで巨大なメモリを宣言しています!
あなたのコメントによると:
関数宣言:
char add_func(char a[250][250][250], int i, int j); // function definition
このようにしてみてください:
char a[250][250][250];
a[i][j][max] = add_func(a, i, j );