Pointer và Constant
Pointer to Constant
VD về pointer to constant:
const int *ptr;
Pointer trên:
1. Có thể trỏ đến vùng nhớ của hằng và chỉ pointer to constant mới làm được như vậy.
2. Có thể trỏ đến vùng nhớ của biến thông thường và thông qua con trỏ đó, vùng nhớ trở thành read-only. Cố gắng thay đổi bằng dereference operator sẽ gây ra lỗi compile. Ta có thể dùng để đảm bảo sự toàn vẹn cho dữ liệu của vùng nhớ mà nó trỏ đến.
Constant pointer
Là con trỏ chỉ gán được địa chỉ một lần khi khởi tạo, và không thể trỏ đi nơi khác được. VD về constant pointer:
int value1 = 5;
int value2 = 10;
int *const ptr = &value1;
ptr = &value2; //compile error
Lúc này bản thân con trỏ là hằng, còn vùng nhớ nó trỏ đến thì không phải hằng.
Constant pointer to constant
Kết hợp cả hai loại ở trên để tạo ra loại con trỏ chỉ có chức năng read-only và cũng không thể thay đổi vùng nhớ nó trỏ đến.
int value = 5;
const int *const ptr = &value;
&ptr = 10; //compile error int otherValue = 10;
ptr = &otherValue; //compile error












