const char * vs char在C ++中用于数组(单引号和双引号)

时间:2018-06-27 17:33:36

标签: c++ visual-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*的实际含义。

1 个答案:

答案 0 :(得分:0)

  

但是,如果我将“”用于char数组或将“”用于const char *数组,则不会   工作

在第一个示例中,您创建了一个由4个vector<string> vector_string; vector_string.reserve(list_string.size()); vector_string.assign(move_iterator(list_string.begin()), move_iterator(list_string.end())); -chars组成的数组,这意味着char arr[4];的每个元素都是一个arrchar'H'char'e',依此类推。因此,当您为数组元素char分配char时,可以。

在第二个示例中,您创建了4个指向char-const char的指针的数组,这意味着数组的每个元素都是一个指针,并且它指向const char* arr[4];,您保证不会更改。 char是一个字符串文字,它是2的数组-一个"H" char和一个终止的空'H'。该数组衰减为指向其第一个元素'\0'-一个'H'的指针(其余字母相同)。您的数组是指向const char的指针的数组,您为const char分配了指针,因此可以正常工作。

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