tags:

views:

258

answers:

2

I have a structure:

struct mystruct
{
    int* pointer;
};

structure mystruct* struct_inst;

Now I want to change the value pointed to by struct_inst->pointer. How can I do that?

EDIT

I didn't write it, but pointer already points to an area of memory allocated with malloc.

+9  A: 

As with any pointer. To change the address it points to:

struct_inst->pointer = &var;

To change the value at the address to which it points:

*(struct_inst->pointer) = var;

Arkku
Perfect, the second one was what I was looking for. Thanks.
klez
+1  A: 

You are creating a pointer of type mystruct, I think perhaps you didn't want a pointer:

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

Of if you need a mystruct pointer on the heap instead:

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);
Brian R. Bondy
I wanted a pointer. The value change takes place inside a function. Plus, I already assigned `pointer` to a malloc-ed area of memory.
klez
I guess the answer's point was that your code example didn't show allocating any memory for the `struct mystruct`, just an uninitialised pointer to such a struct. But of course `pointer` inside the struct must also point somewhere. =)
Arkku