我有一个字符串,其中包含成员变量的名称。我想用它来访问会员本身

时间:2014-10-01 04:08:44

标签: c pointers character

#include <stdio.h>
#include <stdlib.h>

struct student{
 int wkTime;   
} x;

int main(void) {
struct student* john = malloc(sizeof(x));
john ->wkTime = 10;

void* emp;
emp = (char *) "wkTime";

printf("%d",john ->wkTime);
printf("%d",john -> *(emp));

return 1;
}

我想要访问vaiable的值 - wkTime不使用john - &gt; wkTime但是使用* emp我想得到john的wkTime变量的值。基本上在我将以字符指针的形式具有变量名称的情况下。我想用它来访问我的学生节点实例中的变量。

1 个答案:

答案 0 :(得分:4)

在标准C中没有内置的方法。大多数变量和字段名称甚至不存在于编译的二进制文件中,因此无法做到。 C通常不支持类似反射的功能。

如果您需要这样的功能,您必须手动实施。一种方法是编写一个访问器函数,该函数接受指向结构和字段名称的指针,并返回该值。另一种选择是名称和字段偏移/大小的表格。

当然,这些方法中的每一种都需要手动列出字段至少一次。