C结构:可以使用函数参数来引用结构指针

时间:2017-10-01 09:30:08

标签: c pointers struct

我正在学习OOP C,我想写相当于getter和setter。 我有以下结构。

typedef struct {
    int item0;
    int item1;
    int item2;
    etc...;

} ItemsStr;
typedef ItemsStr * ItemsPtr;

items_get_item(ItemsPtr item, itemname) {
    return item->itemname;
}

我意识到语法无效但有没有办法完成上述操作? 我也意识到我可以写一个switch语句,但我想知道是否有办法使用传入的参数来进行deference。

1 个答案:

答案 0 :(得分:0)

您可以使用offsetof()

int items_get_item(ItemsPtr items, size_t offset) {
    return *(int*)((char*)items + offset);
}

然后来电者这样做:

items_get_item(items, offsetof(ItemsStr, item1))