如何访问指向另一个结构中声明的结构的指针?

时间:2013-02-09 21:21:14

标签: c pointers structure

我的代码是这样的:

struct a{
           ....
           ....
           };
    struct a c[MAXNODES];

    struct b{
           int k;
           struct a *p;
           };
    struct b d[MAXNODES];

所以,如果我需要访问struct astruct b的指针,我是否应该使用间接运算符。

some_variable=*(d.[i-1].p);

1 个答案:

答案 0 :(得分:1)

所以你有2个结构,其中一个持有指向另一个实例的指针:

typedef struct a {
    int i;
} A;

typedef struct b {
    A *pA;
} B;

然后在某处,你有一个结构数组,struct a的实例驻留在其中:

A arr[10];

B b;
b.pA = &arr[0]; // makes b.pA to point to the address of first element of arr
b.pA->i = 2;    // equivalent to (*b.pA).i = 2;

A a = *b.pA;    // creates a copy of an element that b.pA points to
A* pA = b.pA;   // stores the reference (copies the pointer)