我是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*
的实际含义。
答案 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];
的每个元素都是一个arr
。 char
是'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
与''
交换,则将不起作用,因为数组元素的类型与您要分配的数据不匹配。