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
我认为这是对所给问题的更恰当的回答