const char myVar *与const char myVar []

时间:2011-08-16 17:13:22

标签: c++ c

  

可能重复:
  Difference between using character pointers and character arrays

有什么区别:

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

如果有的话?

3 个答案:

答案 0 :(得分:11)

指针可以重新分配,数组不能。

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

答案 1 :(得分:5)

首先是一个指针 第二个是阵列。

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

相同

您可以将第一个指针指向同一类型的任何其他变量 你无法重新分配数组。

答案 2 :(得分:2)

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

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