Как работать с указателем на указатель на структуру в C?

Я хочу изменить член структуры под двойным указателем. Ты знаешь как?

Пример кода

typedef struct {
    int member;
} Ttype;

void changeMember(Ttype **foo) {
   //I don`t know how to do it
   //maybe
   *foo->member = 1;
}

4 ответа

Решение

Пытаться

(*foo)->member = 1;

Вы должны явно использовать * сначала. В противном случае это попытка разыменования члена.

Из-за приоритета операторов, вам нужно заключить в скобки это:

(*foo)->member = 1;

Вы можете использовать временную переменную для улучшения читабельности. Например:

Ttype *temp = *foo;
temp->member = 1;

Если у вас есть контроль над этим и разрешено использовать C++, лучше использовать ссылку. Например:

void changeMember(Ttype *&foo) {
   foo->member = 1;
}

Maybe (*foo)->member = 1 (если он распределяется динамически)

Другие вопросы по тегам