0
struct sample
{
    int a;
    char b;
    float c;
    int *al;
    union un
    {
        int a;
        char c;
        float f;
    }*ptr;
}test;

如何访问结构成员“al”和联合成员 a、c、f?

4

2 回答 2

3

与其他没有区别:

  1. 使用权al

    test.al
    

    如果你想要 的值al,你可以得到它*(test.al)

  2. 访问a, c,f

    test.ptr->a;
    test.ptr->c;
    test.ptr->f;
    
于 2014-03-03T08:08:03.647 回答
0

问题是您需要取消引用指针。

通常我们会这样做以取消对联合的引用。

test.*ptr.a.

这样做的问题是编译器将在取消引用符号之前执行点符号,因此编译器将取消引用联合中的字段,而不是它自己的联合。

为了解决这个问题,我们可以将'*ptr'放在括号中以强制在访问该字段之前取消联合。像这样。

test.(*ptr).a

为了更简单的语法,这也可以写成

test.ptr->a

于 2014-03-03T08:29:06.713 回答