由于某种原因,我想为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)
答案 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
被正确初始化为指针指针