C 中的 Char 数组声明和初始化

标签 c arrays char

我很好奇为什么这在 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/

相关文章:

c - C 中 1 的补码运算符

arrays - Bash 脚本和数组推送

c - 从 memcpy 返回到双变量

javascript - 在 AngularJs 中迭代对象

javascript - Mustache.js 获取数组的当前索引

c - 在 C 中创建字符串的不同方法

C++ 简单指针传递

c - 如何增加C中正在运行的程序的堆栈大小

c - 将 char 数组分配给 char*

c - 在 C 中通过 TCP/IP 发送和接收字节数组