web-dev-qa-db-fra.com

Déréférencer un pointeur à l'intérieur d'un pointeur de structure

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.

33

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;

47
Arkku

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);
4
Brian R. Bondy