【发布时间】:2014-08-01 08:16:22
【问题描述】:
我尝试初始化结构变量如下:
struct Abc{
char str[10];
};
int main(){
struct Abc s1;
s1.str="Hello"; //error
}
我可以理解这种行为,因为它与
char str[10];
str="Hello"; // incompatible types
但是看看下面的初始化
struct Abc s1={"Hello"}; //This is fine
struct Abc s2={.str="Hello"}; //This is also fine
我记得在我毕业的时候,我读了很多教科书,上面说这两个初始化是一回事(即使用 { } 符号初始化结构变量和显式使用 (.) 运算符是同一件事)。但上面的讨论证明它们并不相同。
我的问题是这些初始化之间到底有什么区别?
【问题讨论】:
-
str="你好";是赋值,不是初始化...
-
您可能会发现 this 提供信息。
-
前两个不是初始化。它们是任务。
标签: c struct initialization