如果它是a struct那么就可以完成
*p = {var1, var2..};
Run Code Online (Sandbox Code Playgroud)
但似乎这不起作用union:
union Ptrlist
{
Ptrlist *next;
State *s;
};
Ptrlist *l;
l = allocate_space();
*l = {NULL};
Run Code Online (Sandbox Code Playgroud)
只得到:
expected expression before ‘{’ token
Run Code Online (Sandbox Code Playgroud)
Cra*_*rks 28
在C99中,您可以使用ad esignated union初始化程序:
union {
char birthday[9];
int age;
float weight;
} people = { .age = 14 };
Run Code Online (Sandbox Code Playgroud)
在C++中,联合可以有构造函数.
在C89中,您必须明确地执行此操作.
typedef union {
int x;
float y;
void *z;
} thing_t;
thing_t foo;
foo.x = 2;
Run Code Online (Sandbox Code Playgroud)
顺便说一句,您是否意识到在C联盟中,所有成员共享相同的内存空间?
int main ()
{
thing_t foo;
printf("x: %p y: %p z: %p\n",
&foo.x, &foo.y, &foo.z );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
x:0xbfbefebc y:0xbfbefebc z:0xbfbefebc