如何访问C中结构内的指针成员?

时间:2014-03-03 08:05:00

标签: c pointers member member-pointers

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

如何访问结构成员'al'和工会成员a,c,f?

2 个答案:

答案 0 :(得分:2)

与其他人没有区别:

  1. 访问al

    test.al
    

    如果您想要al的值,可以通过*(test.al)获取。

  2. 访问acf

    test.ptr->a;
    test.ptr->c;
    test.ptr->f;
    

答案 1 :(得分:0)

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

通常我们会这样做来取消引用联盟。

test.*ptr.a.

这个问题是编译器会在解除引用符号之前执行注释,因此编译器将取消引用联合中的字段,而不是它自己的联合。

要解决这个问题,我们可以在括号中加上'* ptr'来强制在访问字段之前引用联合。像这样。

test.(*ptr).a

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

test.ptr->a