c - 如何通过引用传递 union 成员

标签 c pointers structure unions

我有一个 union 声明如下:

typedef union {
    mpls_vpls_t Vpls_dat; //typedef struct
    mpls_vpws_t Vpws_dat; //typedef struct
}ser_cache_t;

然后我为它分配内存:

ser_dat_ch = calloc(LABEL_T_CNT,sizeof(ser_cache_t));
if (ser_dat_ch == NULL)
    return ERROR;

static ser_cache_t *ser_dat_ch = NULL; 是全局的。

现在我想用数据填充我的 union ,因此我想将指向它的指针传递给函数,例如:
rv = switch_mpls_vpws_data_get(lab, &ser_dat_ch->Vpws_dat[lab]);
但是这里编译器尖叫:expression must have pointer-to-object type 为什么会这样,&ser_dat_ch->Vpws_dat[lab] 不会解析到我正在寻找的地址吗?

最佳答案

我假设您有一组这样的 union 和一个指向该内存开头的指针。然后,访问第 i 个元素的结构成员之一看起来像

ser_dat_ch[i].Vpws_dat

指向那个 union 的指针是

&(ser_dat_ch[i])

指向 union 中结构之一的指针(这显然是您正在寻找的)是

&(ser_dat_ch[i].Vpws_dat)

关于c - 如何通过引用传递 union 成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39756144/

相关文章:

c - 初始化一个具有结构体的队列

c - 当某些字段为空时,如何使用 sscanf 和 scanset 以逗号分隔的字符串提取字段

可以将临时指针数组传递给 C 中的函数吗?

嵌入许多简单变量和一个嵌套结构的结构的 C++ 深度复制..(memcpy?)

c - 用另一个结构体初始化该结构体,这可能吗?

c - 16 位处理器如何拥有 4 字节大小的 long int?

c - C语言中如何获取指向指针的指针?

c - 这段C代码如何原位反转二叉树?

c++ - 通过智能指针给类成员赋值

python - 使用多个 Python 应用程序构建存储库