Vì vậy, tôi đã làm các xét nghiệm sau:Chuỗi ký tự chứa ' 0' - tại sao chúng không giống nhau?
char* a = "test";
char* b = "test";
char* c = "test\0";
Và bây giờ các câu hỏi:
1) Có đảm bảo rằng a==b
? Tôi biết tôi đang so sánh địa chỉ. Điều này không có nghĩa là so sánh các chuỗi, nhưng liệu các chuỗi ký tự giống hệt nhau có được lưu trữ ở một vị trí bộ nhớ duy nhất hay không
2) Tại sao không a==c
? Không nên trình biên dịch có thể thấy rằng họ đang đề cập đến cùng một chuỗi?
3) Có thêm \0
được thêm vào cuối c
, ngay cả khi nó đã có sẵn không?
Tôi không muốn hỏi 3 câu hỏi khác nhau vì điều này dường như có liên quan, xin lỗi 'bout.
Lưu ý: Thẻ đúng, tôi quan tâm đến C++. (mặc dù vui lòng nêu rõ nếu hành vi khác với C)
Phải là 'char const * a = ...'. –
a và b có cùng giá trị, nhưng điều đó không nhất thiết có nghĩa là chúng là chuỗi _same_. –
@HunterMcMillen - thực sự đó chính là ý nghĩa của nó. –