Đây là câu hỏi về C++ của newbie. Sự khác biệt giữa hai cấu trúc sau đây là gì?Làm cách nào để đọc cấu trúc con trỏ C++?
1. const int* const* const x
2. const int**
Làm cách nào để đọc các cấu trúc này?
Đây là câu hỏi về C++ của newbie. Sự khác biệt giữa hai cấu trúc sau đây là gì?Làm cách nào để đọc cấu trúc con trỏ C++?
1. const int* const* const x
2. const int**
Làm cách nào để đọc các cấu trúc này?
Sẽ dễ dàng hơn một chút nếu bạn nhóm mọi thứ theo đúng cách. Ví dụ: *const
thực sự là một đơn vị có nghĩa là "const pointer to" (bạn có thể đọc số const
dưới dạng một chỉ số ở đây: *const
). Tôi muốn viết nó là:
const int *const *const p1; // p1 is a const pointer to const pointer to const int
const int **p2; // p2 is a pointer to pointer to const int
Cũng nhớ rằng các khai báo đọc "trong ra ngoài", bắt đầu từ định danh được khai báo.
Làm cách nào để đọc các cấu trúc này?
Đọc chúng ngược lại và đọc *
là "con trỏ đến".
const int* const* const
là một hằng số trỏ đến con trỏ không đổi đến hằng số nguyên.
const int**
là con trỏ trỏ đến một hằng số nguyên.
Có một công cụ đó là hữu ích/thú vị để giải mã tờ khai: http://cdecl.ridiculousfish.com/
Trong trường hợp của bạn nó báo cáo: const int* const* const x
=> khai báo x là con trỏ const để const con trỏ đến const int const int** x
=> khai báo x là con trỏ để trỏ đến const int