2010-04-05 22 views

Respuesta

42

Como con cualquier puntero. Para cambiar la dirección de al que apunta:

struct_inst->pointer = &var;

Para cambiar el valor en la dirección a la que apunta:

*(struct_inst->pointer) = var;

+3

perfecto, el segundo era lo que estaba buscando. Gracias. –

+5

gracias. dios, me encanta cómo siempre se puede obtener una respuesta directa aquí – user12345613

+0

Definitivamente usaré los paréntesis para estar seguro, pero ¿es necesario – robisrob

4

Estás creando un puntero de tipo MyStruct , Creo que tal vez usted no quería un puntero:

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

de si necesita un puntero MyStruct en el montón en su lugar:

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

Quería un puntero. El cambio de valor tiene lugar dentro de una función. Además, ya asigné 'pointer' a un área de memoria malloc-ed. –

+2

Supongo que el punto de la respuesta fue que su ejemplo de código no mostraba la asignación de ninguna memoria para la 'struct mystruct', solo un puntero no inicializado a dicha estructura. Pero por supuesto 'puntero' dentro de la estructura también debe apuntar a alguna parte. =) – Arkku

Cuestiones relacionadas