【发布时间】:2021-04-12 09:28:04
【问题描述】:
这是一个 char* 的二维数组,例如存储不同语言的不同字符串:
typedef enum
{
FRENCH,
ENGLISH,
GERMAN,
LANGUAGES_COUNT
} languages_t;
typedef enum
{
HELLO,
THANK_YOU,
WORDS_COUNT
} words_t;
char *text_tab[WORDS_COUNT][LANGUAGES_COUNT] =
{
{"bonjour", "hello", "guten tag"},
{"merci", "thank you", "danke"}
};
轻松访问它:
int main()
{
printf("%s\n", text_tab[HELLO][ENGLISH]);
printf("%s\n", text_tab[THANK_YOU][FRENCH]);
printf("%s\n", text_tab[HELLO][GERMAN]);
return 0;
}
现在,我不想直接访问 text_tab,而是通过一个结构:
typedef struct
{
int a;
char ***txt; // here is not working
} test_t;
test_t mystruct = {5, text_tab};
这个想法是通过这种方式访问 text_tab :
printf("%s\n", mystruct.txt[BONJOUR][ANGLAIS]);
printf("%s\n", mystruct.txt[MERCI][FRANCAIS]);
printf("%s\n", mystruct.txt[BONJOUR][ALLEMAND]);
如何在结构体中声明“txt”字段? 我只使用静态分配,我不想在“txt”中复制“text_tab”的内容,只是使用指针。
谢谢。
【问题讨论】:
标签: c pointers multidimensional-array struct implicit-conversion