如何为struct member中的双指针赋值?

时间:2011-12-11 21:07:12

标签: c++ pointers struct double

由于某种原因,我想为struct member中的双指针赋值。我的结构有3个成员的第一个是int,第二个是指向那个int的指针,第三个是双指针,它指向第二个成员(指向)。第三个成员也不知道如何定义。这是来源:

#include <iostream.h>

typedef struct {
    int a;
    int *b;
    int **c;
} st;

st st1, *st2 = &st1;

void main(){
// first define a member  
    st1.a = 200;
// second assign b pointer member to a
    st2->b = &st1.a;
// third assign c pointer member to b (but that don't work)
    *(st2)->c = st2->b;
}

OS:win 7,64,c ++(c ++ Builder 2010)

2 个答案:

答案 0 :(得分:2)

试试这个:

st2->c = &st2->b;

指定指向指针与指定指向int的指针完全相同。你只需给它指针的地址,而不是int的地址。

答案 1 :(得分:1)

typedef struct {
    int a;
    int *b;
    int **c;
} st;

st mySt;

void main() {
    mySt.a = 200;
    mySt.b = &mySt.a;
    mySt.c = &mySt.b;
}

使用最后一个赋值,你得到字段b的地址,这是一个指针,所以它是指针的地址,然后字段c被正确初始化为指针指针