【发布时间】:2020-05-02 17:38:21
【问题描述】:
如何使用结构体指针赋值an array wrapped into a struct?
我知道这种语法:
size_t initArrayList[] = {1,1,1};
memcpy(pStruct->sizet, initArrayList, sizeof(pStruct->sizet));
是否可以使用类似的语法:
Stru = (struct myStruct) {.sizet = {1,1,1}};
使用指针?
我希望能详细说明 (struct myStruct) {.sizet = {1,1,1}} 的作用。
struct myStruct {
size_t sizet[3];
} ;
void struInit(struct myStruct * pStruct) ;
int main()
{
struct myStruct Stru;
struInit(&Stru);
if (Stru.sizet[1]==1)
printf("\nStru.sizet[1]==1");
return 0;
}
void struInit(struct myStruct * pStruct ) {
// I know this syntax
// size_t initArrayList[] = {1,1,1};
// memcpy(pStruct->sizet, initArrayList, sizeof(pStruct->sizet));
}
【问题讨论】:
-
您是在问两个注释行中的哪一个是正确的?应该使用
memcpy。 -
当 Stru 通过地址传递时,我正在寻找与
Stru = (struct myStruct) {.sizet = {1,1,1}};类似的语法。我知道第一个注释行有效。 -
之前看过这个,不知道怎么评论。我不会在生产代码中使用它,但是 .是访问匿名结构或比您的第一个答案更不直观/可维护的东西。 stackoverflow.com/questions/14248044/…
-
@Bwebb 语法是带有指定初始值设定项的复合文字。它是 C99,所以一直存在。所以是的,只要它是一个结构成员,就可以分配一个数组。我发现阅读完毕
标签: c arrays struct variable-assignment assign