J'ai une structure:
struct mystruct
{
int* pointer;
};
structure mystruct* struct_inst;
Maintenant, je veux changer la valeur pointée par struct_inst->pointer
. Comment puis je faire ça?
MODIFIER
Je ne l'ai pas écrit, mais pointer
pointe déjà vers une zone de mémoire allouée avec malloc
.
Comme avec n'importe quel pointeur. Pour changer le adresse il pointe vers:
struct_inst->pointer = &var;
Pour changer la valeur à l'adresse vers laquelle il pointe:
*(struct_inst->pointer) = var;
Vous créez un pointeur de type mystruct, je pense que vous ne vouliez peut-être pas de pointeur:
int x;
struct mystruct mystruct_inst;
mystruct_inst.pointer = &x;
*mystruct_inst.pointer = 33;
Si vous avez plutôt besoin d'un pointeur mystruct sur le tas:
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);