这是一个可能的重复问题:使用字符指针和字符数组的区别
“字符指针”和“字符数组”有什么不同?
如果有一个?
const char* myVar = "Hello World!";
const char myVar[] = "Hello World!";
如果有一个?
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
。