这样可以,先用typeof把匿名字面量转换成数组对应类型,再memcpy。不过应该没什么地方用得上吧。。。
#include <stdio.h> #include <string.h> int main(void) { int a[3]; memcpy(a, (typeof(a)){1,2,3}, sizeof(a)); printf("%d
", a[0]); return 0; }
如果是结构体,连memcpy也不用,可以直接用加了typeof的匿名变量来赋值。
typeof似乎是gcc的扩展语法,gcc以外的环境不知道能不能用了。
#include <stdio.h> #include <string.h> struct { int a; float b; } t; int main(void) { t = (typeof(t)){1, 2.0}; printf("%f
", t.b); return 0; }