首页 > 解决方案 > C中的随机成员访问

问题描述

假设一个结构像:

struct node{
    int a;
    int b;
    char c;
    struct node* next;
}

以及一个使用 tmp 指针遍历单链表的函数;

void getMember(char* member_name){
    While(tmp != NULL){

    //here, I'd like to access a user defined member passed into the function
    // something like printf("%d\t", tmp[member_name]);

       tmp = tmp->next;
    }
}

我尝试使用指针算法通过偏移量来访问它,例如:

//suppose member_name is instead an offset of size, like sizeof(int), rather than the char* shown above;
printf("%d\t",*(&(tmp)+member_name);

但是由于填充,算术在结构中不能保证,就像它是数组一样。除了打开打包(我认为这会使算术工作)之外,如何在 C 中实现对结构成员的随机访问?用这种数据结构能实现吗?还是需要使用其他东西?

标签: c

解决方案


推荐阅读