Ответ 1
Как и любой указатель. Чтобы изменить адрес, он указывает на:
struct_inst->pointer = &var;
Чтобы изменить значение по адресу, на который он указывает:
*(struct_inst->pointer) = var;
У меня есть структура:
struct mystruct
{
int* pointer;
};
structure mystruct* struct_inst;
Теперь я хочу изменить значение, на которое указывает struct_inst->pointer
. Как я могу это сделать?
ИЗМЕНИТЬ
Я не писал его, но pointer
уже указывает на область памяти, выделенную malloc
.
Как и любой указатель. Чтобы изменить адрес, он указывает на:
struct_inst->pointer = &var;
Чтобы изменить значение по адресу, на который он указывает:
*(struct_inst->pointer) = var;
Вы создаете указатель типа mystruct, я думаю, возможно, вам не нужен указатель:
int x;
struct mystruct mystruct_inst;
mystruct_inst.pointer = &x;
*mystruct_inst.pointer = 33;
Если вам нужен указатель-мишень в куче:
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);