Разыменование указателя внутри указателя структуры - PullRequest
33 голосов
/ 06 апреля 2010

У меня есть структура:

struct mystruct
{
    int* pointer;
};

structure mystruct* struct_inst;

Теперь я хочу изменить значение, на которое указывает struct_inst->pointer.Как я могу это сделать?

РЕДАКТИРОВАТЬ

Я не написал, но pointer уже указывает на область памяти, выделенную с malloc.

Ответы [ 2 ]

47 голосов
/ 06 апреля 2010

Как с любым указателем. Чтобы изменить адрес , он указывает на:

struct_inst->pointer = &var;

Чтобы изменить значение по адресу, на который оно указывает:

*(struct_inst->pointer) = var;

4 голосов
/ 06 апреля 2010

Вы создаете указатель типа mystruct, думаю, возможно, вам не нужен указатель:

int x;
struct mystruct mystruct_inst;
mystruct_inst.pointer = &x;
*mystruct_inst.pointer = 33;

Если вам нужен указатель mystruct вместо кучи:

int x;
struct mystruct *mystruct_inst = malloc(sizeof(struct mystruct));
mystruct_inst->pointer = malloc(sizeof(int));
*(mystruct_inst->pointer) = 33;  

/*Sometime later*/

free(mystruct_inst->pointer);
free(mystruct_inst);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...