A.s*_*lar 1 c struct initialization
我尝试初始化struct变量如下:
struct Abc{
char str[10];
};
int main(){
struct Abc s1;
s1.str="Hello"; //error
}
Run Code Online (Sandbox Code Playgroud)
我可以理解这种行为,因为它是一样的
char str[10];
str="Hello"; // incompatible types
Run Code Online (Sandbox Code Playgroud)
但请看下面的初始化
struct Abc s1={"Hello"}; //This is fine
struct Abc s2={.str="Hello"}; //This is also fine
Run Code Online (Sandbox Code Playgroud)
我记得在毕业时,我读了很多教科书,说这些初始化都是一回事(即使用{}表示法初始化结构变量并明确使用(.)运算符是相同的事情).但上面的讨论证明它们并不相同.
我的问题是这些初始化之间究竟有什么区别?
不同的是,这两行
struct Abc s1={"Hello"}; //This is fine
struct Abc s2={.str="Hello"}; //This is also fine
Run Code Online (Sandbox Code Playgroud)
正在初始化,而这
s1.str="Hello";
Run Code Online (Sandbox Code Playgroud)
是作业.您可以将char数组初始化为字符串文字,但不能通过赋值.