我很好奇为什么这在 C 中是不允许的:
char myarray[4];
myarray = "abc";
这是允许的:
char myarray[4] = "abc";
我知道在第一种情况下我应该使用strcpy:
char myarray[4];
strcpy(myarray, "abc");
但为什么不允许声明和稍后初始化而允许声明和同时初始化?与C程序的内存映射有关吗?
谢谢!
最佳答案
那是因为您的第一个代码片段没有执行初始化,而是赋值:
char myarray[4] = "abc"; // Initialization.
myarray = "abc"; // Assignment.
并且数组在 C 中不能直接赋值。
名称 myarray
实际上解析为其第一个元素的地址 (&myarray[0]
),这不是 lvalue ,因此不能成为赋值的目标。
关于C 中的 Char 数组声明和初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4978056/