我的结构看起来像这样:
struct Node
{
int value;
struct Node *A;
struct Node *B;
struct Node *C;
struct Node *D;
struct Node *E;
struct Node *F;
struct Node *G;
struct Node *H;
struct Node *I;
};
typedef struct Node *List;
Run Code Online (Sandbox Code Playgroud)
我试图通过list-> znak访问其中一个"子节点",其中'znak'是可变的.但是我收到错误:
错误:'struct Node'没有名为'znak'的成员
我不知道如何"告诉"C char是一个变量.
我写过char,因为"znak"在我的语言中意味着char.
在C中,结构字段名称在运行时不存在,因此您无法像在某些脚本语言中那样将运行时字符或字符串转换为结构偏移量.在你的情况下,我会使用一个数组,Node *而不是有10个单独的字段.
struct Node
{
int value;
struct Node *children[9];
}
Run Code Online (Sandbox Code Playgroud)
要访问数组,可以将字符转换为数组索引,方法是将它们与序列中的第一个字符进行比较.
struct Node* list = /*...*/;
int znak = 'D';
list->children[znak - 'A'] = /*...*/
Run Code Online (Sandbox Code Playgroud)
当然,一旦你开始使用数组而不是命名字段,也许它更容易znak成为整数索引而不是A和I之间的字符.