Tôi gặp khó khăn khi tìm mẫu trực quan cho cách const được sử dụng trong các khai báo bằng ngôn ngữ C và C++. Dưới đây là một số ví dụ:Xác định vị trí "const" trong tuyên bố
const int a; //Const integer
int const a; //Const integer
const int * a; //Pointer to constant integer
int * const a; //Const pointer to an integer
int const * a const; //Const pointer to a const integer
Trong dòng 1 và 2, có vẻ như const
có thể đứng trước hoặc sau khi int
, đó là những gì nó sẽ thay đổi.
- Vậy làm thế nào, ở dòng 4, không trình biên dịch quyết định rằng
const
được sửa đổi*
(con trỏ) chứ không phải làint
? - Quy tắc mà trình biên dịch tuân theo để quyết định điều mà
const
áp dụng cho là gì? - Quy tắc có tuân thủ cùng một quy tắc cho
*
không?
liên kết bắt buộc với [quy tắc xoắn ốc theo chiều kim đồng hồ] (http://c-faq.com/decl/spiral.anderson.html) –
Nếu không có mảng hoặc chức năng liên quan, chỉ cần ** đọc từ phải sang trái * * cũng có thể trợ giúp: 'int const * const a':" 'a' là một con trỏ const đến một const int". –
Đánh dấu, nếu bạn đã gửi câu trả lời đó, tôi đã kiểm tra nó. Rất hữu ích và thực sự giúp tôi tìm ra! –