我试图初始化一组字符
如果我这样做,主要工作正常
char arr1[20] = "initial";
printf("%s", arr1);
但是如果我尝试在其他任何地方(例如结构体中)执行此操作,请尝试在我的主函数中使用它,如
struct foo
{
char arr1[20] = "initial";
}
int main(void)
{
struct foo foobar;
printf("%s", foobar.arr1);
}
或
struct foo
{
char arr1[20];
}
int main(void)
{
struct foo foobar;
foobar.arr1 = "initial";
printf("%s", foobar.arr1);
}
我开始收到错误。为什么一个工作而另一个不工作?
答案 0 :(得分:2)
试试这样..
struct foo
{
char arr1[20];
}
int main(void)
{
struct foo foobar;
strcpy(foobar.arr1,"initial");
printf("%s", foobar.arr1);
}
答案 1 :(得分:2)
您正在将结构定义与变量初始化混合在一起。
结构定义说明哪些类型构成结构以及它们的名称是什么,例如:
struct foo
{
char arr1[20];
};
说“struct foo
是我们刚刚定义的类型,由char
”的数组[20]组成。目前还没有这种类型的实际变量。
然后,您可以使用与第一个示例中声明和初始化arr1
类似的方式声明和初始化此类型的实例:
struct foo foobar = { "initial" };