const char myVar* 和 const char myVar[] 的区别

5
这是一个可能的重复问题:使用字符指针和字符数组的区别 “字符指针”和“字符数组”有什么不同?
const char* myVar = "Hello World!";
const char  myVar[] = "Hello World!";

如果有一个?
3个回答

13
指针可以被重新赋值,数组则不能。
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 我认为这是对所提出问题的更恰当的答案。 - Chad

5

首先是指针。
其次是数组。

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

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


2

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接