thể trùng lặp:
Difference between using character pointers and character arraysconst char * myVar vs const char myVar []
sự khác biệt giữa là gì:
const char* myVar = "Hello World!";
const char myVar[] = "Hello World!";
Nếu có một?
thể trùng lặp:
Difference between using character pointers and character arraysconst char * myVar vs const char myVar []
sự khác biệt giữa là gì:
const char* myVar = "Hello World!";
const char myVar[] = "Hello World!";
Nếu có một?
Con trỏ có thể được gán lại, mảng không thể.
const char* ptr = "Hello World!";
const char arr[] = "Hello World!";
ptr = "Goodbye"; // okay
arr = "Goodbye"; // illegal
Ngoài ra, như những người khác đã nói:
sizeof(ptr) == size of a pointer, usually 4 or 8
sizeof(arr) == number of characters + 1 for null terminator
Đầu tiên là một con trỏ.
Thứ hai là một mảng.
Kích thước của tất cả các con trỏ trong một hệ thống sẽ giống nhau.
Kích thước của mảng trong khai báo thứ hai giống như kích thước của chuỗi ký tự cộng với \0
.
Bạn có thể trỏ con trỏ đầu tiên đến bất kỳ biến nào khác cùng loại.
Bạn không thể gán lại mảng.
Đầu tiên là con trỏ: sizeof(myVar) == sizeof(void*)
. Nó không liên tục, vì vậy bạn có thể sửa đổi nó: myVar++
.
Thứ hai là một mảng: sizeof(myVar) == 13
.
+1 Tôi nghĩ đây là câu trả lời phù hợp hơn cho câu hỏi đã cho – Chad