Как присвоить значение двойному указателю в члене структуры? - PullRequest
0 голосов
/ 12 декабря 2011

По какой-то причине я хочу присвоить значение двойному указателю в члене структуры. У меня есть структура, которая имеет 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;
}

ОС: win 7, 64, c ++ (c ++ Builder 2010)

Ответы [ 2 ]

2 голосов
/ 12 декабря 2011

Попробуйте это:

st2->c = &st2->b;

Назначение указателя на указатель точно такое же, как назначение указателя на int.Вы просто даете ему адрес указателя, а не адрес типа int.

1 голос
/ 12 декабря 2011
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 правильно инициализируется как указатель на указатель.

...