你并没有真正在C中"创建"结构实例.假设p
指向可用内存块,您可以将其p
视为指向结构类型的指针:
typedef struct {int x; long y;} a;
a *p2 = (a*)p;
int z = p2->x;
// or, if you don't want p2:
z = ((a*)p)->x;
Run Code Online (Sandbox Code Playgroud)
一旦p
投射(如上所述隐式或显式),您可以根据需要初始化结构的内容.
作为示例,以下代码将初始化您似乎请求的结构:
typedef struct {int x; float y;} tA;
void initA (void *p) {
tA *p2 = (tA*)p;
p2->x = 0;
p2->y = 3.14159;
}
int main (void) {
char bigmem[100];
initA (&(bigmem[0]));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
不要挂断main
上面的函数,它只是为了说明如何将任意内存地址传递给函数.在你的真实案例中,你将以某种方式分配内存.