c regole Dereferenziare un puntatore all'interno di un puntatore della struttura



puntatori c++ (2)

Ho una struttura:

struct mystruct
{
    int* pointer;
};

structure mystruct* struct_inst;

Ora voglio cambiare il valore puntato da struct_inst->pointer . Come lo posso fare?

MODIFICARE

Non l'ho scritto, ma pointer indica già un'area di memoria allocata con malloc .


Answer #1

Come con qualsiasi puntatore. Per cambiare l' indirizzo punta a:

struct_inst->pointer = &var;

Per modificare il valore all'indirizzo a cui punta:

*(struct_inst->pointer) = var;


Answer #2

Stai creando un puntatore di tipo mystruct, penso che forse non volevi un puntatore:

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

Di se invece hai bisogno di un puntatore mystruct nell'heap:

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




struct