C++ 常量字符myVar*与常量字符myVar[]

C++ 常量字符myVar*与常量字符myVar[],c++,c,C++,C,可能重复: 这两者之间的区别是什么: const char* myVar = "Hello World!"; const char myVar[] = "Hello World!"; 如果有一个?指针可以重新分配,数组不能 const char* ptr = "Hello World!"; const char arr[] = "Hello World!"; ptr = "Goodbye"; // okay arr = "Goodbye"; // illegal 此外,正如其他人所说

可能重复:

这两者之间的区别是什么:

const char* myVar = "Hello World!";
const char  myVar[] = "Hello World!";

如果有一个?指针可以重新分配,数组不能

const char* ptr = "Hello World!";
const char  arr[] = "Hello World!";

ptr = "Goodbye"; // okay
arr = "Goodbye"; // illegal
此外,正如其他人所说:

sizeof(ptr) == size of a pointer, usually 4 or 8
sizeof(arr) == number of characters + 1 for null terminator
第一个是指针。
第二个是数组

系统中所有指针的大小将相同。
第二个声明中数组的大小与字符串文字加上
\0
的大小相同

您可以将第一个指针指向相同类型的任何其他变量。

无法重新分配数组。

第一个是指针:
sizeof(myVar)==sizeof(void*)
。它是非常量,因此您可以修改它:
myVar++


第二个是数组:
sizeof(myVar)==13

我认为这是对所给问题的更恰当的回答