c++ - const char* vs char 用于 c++ 中的数组(单引号和双引号)
问题描述
我是 C++ 新手
1)
#include <iostream>
using namespace std;
int main() {
char arr[4];
arr[0] = 'H';
arr[1] = 'e';
arr[2] = 'l';
arr[3] = 'o';
for (int i = 0; i < 4; i++) {
cout << arr[i] << endl;
}
system("pause");
}
2)
#include <iostream>
using namespace std;
int main() {
const char* arr[4];
arr[0] = "H";
arr[1] = "e";
arr[2] = "l";
arr[3] = "o";
for (int i = 0; i < 4; i++) {
cout << arr[i] << endl;
}
system("pause");
}
如果我使用""
数组char[]
或数组''
,const char*[]
它不起作用。
有人可以帮我弄清楚它发生的原因,并解释它的const char*
实际含义。
解决方案
但是,如果我将“”用于 char 数组或 '' 用于 const char* 数组,则它不起作用
在第一个示例中,您创建了一个 4 数组chars
-char arr[4];
这意味着 的每个元素arr
都是char
. 'H'
is a char
, 'e'
is achar
等。因此,当您将 a 分配给 achar
的数组元素时char
,它会起作用。
在第二个示例中,您创建了包含 4 个指针的数组const char
-const char* arr[4];
这意味着数组的每个元素都是一个指针,并且它指向char
您承诺不会更改的指针。"H"
是一个字符串文字,它是一个由 2 - a 和一个终止的数组组成的char
'H'
null '\0'
。该数组衰减为指向其第一个元素的指针,即-a 'H'
(const char
其余字母相同)。您的数组是指向 的指针数组const char
,您将指针分配给const char
,因此它可以工作。
如果''
与""
它交换将不起作用,因为数组元素的类型与您将分配的数据不匹配。
推荐阅读
- keyboard - USB 3 主机可以编程为 USB 3 外围设备(或 HID 键盘)吗?
- reactjs - 如果用户已经存在于数据库中,则使用 react redux express 进行注册验证
- python - 将具有相同键的新值添加到 Firestore firebase 中的现有文档而不覆盖
- python - Python UDP 请求挂起
- python - pip3 在安装任何东西时不起作用并抛出 pip 需要 TLS/SSL,ssl Python 不可用
- javascript - 从three.js中的3个顶点渲染平面
- linux - 所选目录不是有效的 glassfish 主目录
- java - 本地依赖的 Quarkus ClassNotFoundException
- php - 在 PHP 中运行两个 SQL 查询,其中第一个语句创建一个临时表供第二个语句使用
- typescript - 类型“函数”上不存在属性