使用变量中的数组初始化结构

时间:2009-11-19 22:50:39

标签: c

我们如何使用数组初始化结构(使用其变量)?

此版本效果很好:

MyStruct test = {"hello", 2009};

但是这个版本有问题:

char str[] = "hello";
MyStruct test = {str, 2009};

2 个答案:

答案 0 :(得分:3)

你不能在C中分配数组,所以很遗憾没有办法直接这样做。但是,您可以使用strcpy复制数据。

typedef struct {
  char name[20];
  int year;
} MyStruct;

int main() {
  MyStruct a = { "hello", 2009 }; // works

  char s[] = "hello";
  MyStruct b = { "", 2009 }; // use dummy value
  strcpy(b.name, s);

  return 0;
}

答案 1 :(得分:1)

MyStruct的定义应包含char const *类型的第一个成员。