あなたが望むものに少し依存します。これにより、文字列の 2D 配列が得られます。
const char *nodeNames[][20] =
{
{"RootNode", "Reference", "Node_1", "Node_2", "Node_3"},
{"RootNode", "Hips", "Node_1", "Node_2", "Node_3"},
{"RootNode", "Heviest", "Node_1", "Node_2", "Node_3"},
};
これにより、文字列の配列へのポインターの配列が得られます。
const char *node1[] = {"RootNode", "Reference", "Node_1", "Node_2", "Node_3"};
const char *node2[] = {"RootNode", "Hips", "Node_1", "Node_2", "Node_3"};
const char *node3[] = {"RootNode", "Heviest", "Node_1", "Node_2", "Node_3"};
const char **nodeNames2[] =
{
node1,
node2,
node3,
};
2 つが微妙に異なることに注意してください。1 つ目は配列内に格納されます (したがって、文字列への 3 * 20 ポインターの連続したストレージがあります)。2 つ目は、ポインターの配列内の最初のポインターへのアドレスのみを格納します。であり、文字列を指します。連続したストレージはなく、3 つのポインターのみです。
"Node_1"
どちらの場合も、3 つのインスタンスが 1 つの文字列で表される可能性があるため、ポインターは同じ値である可能性があります。
char の適切な 3D 配列の場合:
const char nodeNames3[3][5][12] =
{
{"RootNode", "Reference", "Node_1", "Node_2", "Node_3"},
{"RootNode", "Hips", "Node_1", "Node_2", "Node_3"},
{"RootNode", "Heviest", "Node_1", "Node_2", "Node_3"},
};
これにより、すべての文字が連続したメモリ (3 * 5 * 12 バイト) に格納されます。