web-dev-qa-db-ja.com

構造体ポインター内のポインターの逆参照

私には構造があります:

struct mystruct
{
    int* pointer;
};

structure mystruct* struct_inst;

ここで、struct_inst->pointerが指す値を変更します。どうやってやるの?

[〜#〜] edit [〜#〜]

書きませんでしたが、pointerはすでにmallocで割り当てられたメモリ領域を指しています。

33

他のポインターと同様。 addressを変更するには、次を指します。

_struct_inst->pointer = &var;_

が指すアドレスで変更するには:

*(struct_inst->pointer) = var;

47
Arkku

タイプmystructのポインターを作成しています。おそらくポインターは必要ないと思います。

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

代わりにヒープにmystructポインターが必要な場合:

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