我正在尝试初始化一个字符数组
如果我在 main 中这样做,它工作正常
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);
}
我开始出现错误。为什么一个有效而另一个无效?
最佳答案
您将结构定义与变量初始化混淆了。
struct 定义说明哪些类型构成一个 struct 以及它们的名称是什么,例如:
struct foo
{
char arr1[20];
};
说“struct foo
是我们刚刚定义的一种类型,它由 char
数组 [20] 组成”。目前还没有这种类型的实际变量。
然后您可以声明和初始化此类型的实例,其方式与您在第一个示例中声明和初始化 arr1
的方式类似:
struct foo foobar = { "initial" };
关于c - 在结构中初始化 main vs 中的 char 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26622592/