Đầu tiên, sự khác biệt là gì:
(1) const char*
(2) ký tự const*
(3) const char const*
Tôi khá chắc là mình hiểu hoàn toàn điều này, nhưng tôi hy vọng ai đó có thể cho tôi một câu cụ thể để nó in sâu vào tâm trí tôi. Đây là một trong những điều mà tôi thấy ổn cho đến khi ai đó đặt tôi vào vị trí và sau đó nó trở nên mờ nhạt!
Ngoài ra, trình biên dịch lưu trữ chuỗi ký tự như thế nào? Đây không phải bài tập về nhà, tôi chỉ đang ôn lại C cho cuộc phỏng vấn, phòng trường hợp có ai quan tâm.
(1) const char*
(2) ký tự const*
Đây là con trỏ (mà bạn có thể thay đổi) thành một ký tự (hoặc các ký tự) mà bạn không thể thay đổi. Nói cách khác, tất cả các chuỗi ký tự.
(3) const char const*
Điều này tăng gấp đôi. Tôi nghĩ bạn muốn giành vị trí thứ ba:
(4) const char * const
Đây là con trỏ bạn không thể thay đổi, trỏ đến một ký tự (hoặc các ký tự) mà bạn không thể thay đổi. Bạn có thể sử dụng điều này cho một con trỏ toàn cục thành một nghĩa đen không nên vô tình thay đổi.
Chuỗi ký tự (rất có thể) sẽ được tập trung sau mã của bạn, thường là trong một phân đoạn hoặc phần được gọi là "rodata".
Tôi là một lập trình viên xuất sắc, rất giỏi!