首页 > 解决方案 > 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*实际含义。

标签: c++visual-c++

解决方案


但是,如果我将“”用于 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,因此它可以工作。

如果''""它交换将不起作用,因为数组元素的类型与您将分配的数据不匹配。


推荐阅读