Arrays 在C语言中,我怎么说;直接;是否将结构复制到数组成员?

Arrays 在C语言中,我怎么说;直接;是否将结构复制到数组成员?,arrays,c,struct,Arrays,C,Struct,所以我想这样做: struct元素{ int t; }; int main(int argc,char*argv[]){ 结构元素arr[10]; arr[0]={3}; 返回0; } 但这给了我以下错误: test.c: In function ‘main’: test.c:7:10: error: expected expression before ‘{’ token 7 | arr[0]={3}; | ^ 为了解决这个问题,我不得不写: in

所以我想这样做:

struct元素{
int t;
};
int main(int argc,char*argv[]){
结构元素arr[10];
arr[0]={3};
返回0;
}
但这给了我以下错误:

test.c: In function ‘main’:
test.c:7:10: error: expected expression before ‘{’ token
    7 |   arr[0]={3};
      |          ^
为了解决这个问题,我不得不写:

intmain(intargc,char*argv[]){
结构元素arr[10];
结构元素tmp={3};
arr[0]=tmp;
返回0;
}

但是我认为当我只想直接赋值给
元素{3}
时,编写一个tmp值是不雅观的。如何修复语法,使我不需要创建此
tmp
值?

您需要的是一个复合文字:

arr[0]=(struct element){3};

顺便说一句,
struct element tmp=element{3}
这是无效的C代码。虽然它是有效的C++。我曾经见过很多可笑的代码块,因为作者不知道C中存在的这个特性,这让我哭了。