第除く配列の次元が指定された(固定されなければなりません)。 char *table[][3]
、または多分char table[][3][7]
を使用します。
#include <stdio.h>
int main(void)
{
char *table1[][3] =
{
{ "hello", "my", "friend" },
{ "hihi", "haha", "hoho"},
};
char table2[][3][7] =
{
{ "hello", "my", "friend" },
{ "hihi", "haha", "hoho"},
};
for (int i = 0; i < 2; i++)
for (int j = 0; j < 3; j++)
printf("[%d][%d] = [%s]\n", i, j, table1[i][j]);
for (int i = 0; i < 2; i++)
for (int j = 0; j < 3; j++)
printf("[%d][%d] = [%s]\n", i, j, table2[i][j]);
return 0;
}
出力:
#include <stdio.h>
int main(void)
{
char **table3[] =
{
(char *[]){ "hello", "my", "friend" },
(char *[]){ "hihi", "haha", "hoho" },
NULL,
};
for (int i = 0; i < 2; i++)
for (int j = 0; j < 3; j++)
printf("[%d][%d] = [%s]\n", i, j, table3[i][j]);
return 0;
}
出力:
[0][0] = [hello]
[0][1] = [my]
[0][2] = [friend]
[1][0] = [hihi]
[1][1] = [haha]
[1][2] = [hoho]
[0][0] = [hello]
[0][1] = [my]
[0][2] = [friend]
[1][0] = [hihi]
[1][1] = [haha]
[1][2] = [hoho]
なC99 '複合リテラル' を使用するなど、あまりにもそれを行うための他の方法は、あります。
[0][0] = [hello]
[0][1] = [my]
[0][2] = [friend]
[1][0] = [hihi]
[1][1] = [haha]
[1][2] = [hoho]
アレイ最初の寸法を除く寸法は固定(指定)する必要があります。 'char * table [] [3]'、おそらく 'char table [] [3] [7];'を使用してください。 –
コンパイラがそれを自分で計算することはできないので、それほど難しくありません。お手伝いありがとう。 –