Как работать с указателем на указатель на структуру в 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 (если он распределяется динамически)