2011-12-11 62 views
0

出于某种原因,我想将值赋给struct成员中的双指针。我有3个成员的第一个结构是int,第二个是指向该int的指针,第三个是双指针,指向第二个成员(指针)。那第三个成员也不知道如何定义。下面是源:如何将值赋给struct成员中的双指针?

#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:赢得7,64,C++(C++生成器2010)

+4

没有一个是C++,'void main()'在C *或* C++中是不合法的...... –

+0

我不会调用'int **'a'double pointer' - 听起来像是这样意味着一个指向double的指针,即'double *'。将其称为“指向int的指针”。 – AAT

回答

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正确初始化为指针的指针。

2

尝试这种情况:

st2->c = &st2->b; 

分配一个指针到指针是完全一样分配一个指向int的指针。你只需要给它一个指针的地址,而不是int的地址。

+0

是的,这是工作谢谢:) –