取决于你想要什么。这将为您提供一个二维字符串数组:
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,
};
请注意,两者略有不同,因为第一个存储在数组中(因此有一个连续存储 3 * 20 个指向字符串的指针),而第二个仅存储指向指针数组中第一个指针的地址,它又指向字符串。没有连续存储,只有三个指针。
在这两种情况下,指针可能是相同的值,因为三个实例"Node_1"
可能由单个字符串表示。
对于正确的 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 字节。