#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变量的值。基本上在我将以字符指针的形式具有变量名称的情况下。我想用它来访问我的学生节点实例中的变量。
答案 0 :(得分:4)
在标准C中没有内置的方法。大多数变量和字段名称甚至不存在于编译的二进制文件中,因此无法做到。 C通常不支持类似反射的功能。
如果您需要这样的功能,您必须手动实施。一种方法是编写一个访问器函数,该函数接受指向结构和字段名称的指针,并返回该值。另一种选择是名称和字段偏移/大小的表格。
当然,这些方法中的每一种都需要手动列出字段至少一次。