Con trỏ hằng và hằng con trỏ là hai khái niệm rất khác nhau và dễ nhầm lẫn hôm nay ta đến với khái niệm và cách dùng của 2 kiểu con trỏ trên :
Định nghĩa :
Ở đây theo việt hóa mà nói thì :
- Con trỏ hằng là con trỏ trỏ đến một vùng nhớ cố định , thông qua con trỏ ta không thể thay đổi giá trị của vùng nhớ đó , nhưng con trỏ có thể trỏ đến vùng nhớ khác . VD : char *p = "Chao cac ban";
Ở trên p trỏ đến vùng nhớ "Chao cac ban" không thể làm thay đối giá trị của vùng nhớ đó , nhưng rõ ràng p có thể trỏ đến vùng nhớ khác .
-Xét cách khai báo 2 :
const kieu_gia_tri* ten_con_tro ; là cách khai báo một con trỏ hằng.
Định nghĩa :
Ở đây theo việt hóa mà nói thì :
- Con trỏ hằng là con trỏ trỏ đến một vùng nhớ cố định , thông qua con trỏ ta không thể thay đổi giá trị của vùng nhớ đó , nhưng con trỏ có thể trỏ đến vùng nhớ khác . VD : char *p = "Chao cac ban";
Ở trên p trỏ đến vùng nhớ "Chao cac ban" không thể làm thay đối giá trị của vùng nhớ đó , nhưng rõ ràng p có thể trỏ đến vùng nhớ khác .
-Hằng con trỏ là con trỏ trỏ đến cố định một vùng nhớ , tức là ta không thể khiến con trỏ trỏ đến vị trí khác , nhưng qua con trỏ ta có thể làm thay đổi giá trị của vùng nhớ đó . VD : int pt[100];
Ở đây pt trỏ đến cố định một vùng nhớ (chứa 100 phần tử của mảng) , nhưng qua pt ta có thể làm thay đổi giá trị của vùng nhớ : pt[5] = 9;*(pt+4) = 10; không hề sai.
Cách khai báo :
Trước tiên ta đến với cách khai báo hằng trong biến bình thường , ta có 2 cách để khai báo hằng của biến bình thường :
const kieu_gia_tri ten_bien;
hoặc kieu_gia_tri const ten_bien;
Ta thấy không sự khác biệt trong tác dụng của định nghĩa hằng của biến thông thường kiểu này , nhưng khi chuyển qua con trỏ ta cần phân biệt 2 cách sử dụng này !
Xét cách khai báo 1:
kieu_du_lieu *const ten_con_tro;
ta thấy ở biến bình thường kiểu dữ liệu được viết là kieu_du_kieu , sang bên con trỏ được viết kieu_du_lieu * ,thực chất kiểu dữ liệu của con trỏ là int * , char * ,....
đây là cách khai báo một hằng con trỏ vd :
int g,h;
int * const pt = &g; // khai bao mot hang con tro
cout << pt;
*pt = 9;
pt = &h; // Sai vi pt la hang con troKhi nói một thứ là hằng thì những thuộc tính mà nó đại diện không đổi trong quá trình làm việc , ví dụ biến thì có thuộc tính lưu trữ giá trị khi coi nó là hằng thì giá trị của biến không đổi , qua con trỏ , con trỏ có thuộc tính lưu trữ địa chỉ thì khi con trỏ coi là con trỏ hằng thì địa chỉ mà nó lưu trữ luôn không đổi.
-Xét cách khai báo 2 :
const kieu_gia_tri* ten_con_tro ; là cách khai báo một con trỏ hằng.
Không có nhận xét nào:
Đăng nhận xét