【发布时间】:2011-02-04 14:57:10
【问题描述】:
我有一个结构:
struct mystruct
{
int* pointer;
};
structure mystruct* struct_inst;
现在我想更改struct_inst->pointer 指向的值。我该怎么做?
编辑
不是我写的,但是pointer已经指向了一个用malloc分配的内存区域。
【问题讨论】:
我有一个结构:
struct mystruct
{
int* pointer;
};
structure mystruct* struct_inst;
现在我想更改struct_inst->pointer 指向的值。我该怎么做?
编辑
不是我写的,但是pointer已经指向了一个用malloc分配的内存区域。
【问题讨论】:
与任何指针一样。要更改它指向的地址:
struct_inst->pointer = &var;
改变值指向的地址:
*(struct_inst->pointer) = var;
【讨论】:
你正在创建一个 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);
【讨论】:
pointer 分配给了一个malloc-ed 内存区域。
struct mystruct 分配任何内存,只是指向此类结构的未初始化指针。但是当然结构内部的pointer 也必须指向某个地方。 =)