在C中,我定义了以下内容:

typedef struct my_struct{
  int foo;
  my_struct* a;
  my_struct* b;
} my_struct;

现在,我有一个变量struct保存值“a”或“b”。
问题:如何访问“char my_var;”,其中my_struct->my_var被视为其实际值(即作为字符my_vara),而不是作为“字符串”b
(实际上,我的编译器抛出了一个错误,说在structmy_var中没有定义成员“my_var”)

最佳答案

让我指出,对于索引,我们通常使用数组;IIUC,您的用例意味着您希望能够通过字符选择的所有成员必须属于同一类型,这里是my_struct *。所以定义一个数组:

struct my_struct{
  int foo;
  my_struct* ptrs[255]; /* can index with any char */
};

现在您可以愉快地用字符索引:
struct my_struct *sP;
/* initialize sP and *sP... */
struct my_struct *sMemP = sP->ptrs['a'];

关于c - 成员运算符:如何在“my_struct-> my_var”中使用“my_var”实际值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49416129/

10-11 16:49