2010-04-05 5 views

Répondre

42

Comme avec n'importe quel pointeur. Pour modifier la adresse il pointe:

struct_inst->pointer = &var;

Pour modifier la valeur à l'adresse à laquelle il souligne:

*(struct_inst->pointer) = var;

+3

parfait, le second est ce que je cherchais. Merci. –

+5

merci. dieu j'aime comment vous pouvez toujours obtenir une réponse directe ici – user12345613

+0

Je voudrais certainement utiliser les parenthèses pour être sûr, mais est-il nécessaire – robisrob

4

Vous créez un pointeur de type mystruct , Je pense que peut-être vous ne vouliez pas de pointeur:

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

de si vous avez besoin d'un pointeur mystruct sur le tas à la place:

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); 
+0

Je voulais un pointeur. Le changement de valeur a lieu à l'intérieur d'une fonction. De plus, j'ai déjà assigné 'pointeur' à une zone de mémoire mallocée. –

+2

Je suppose que le point de réponse était que votre exemple de code n'affichait aucune allocation de mémoire pour le 'struct mystruct', juste un pointeur non initialisé vers une telle structure. Mais bien sûr, le pointeur à l'intérieur de la structure doit également pointer quelque part. =) – Arkku

Questions connexes