
Điều đầu tiên khi lập trình viên nghĩ đến từ khóa const là những gì không thể thay đổi được (hằng số). Bạn không thể thay đổi giá trị của một hằng số. Bạn có thể dùng từ khóa const để chỉ ra rằng một giá trị nào đó sẽ không thể thay đổi được trong suốt chương trình của bạn. Một câu hỏi dành cho bạn:
Bạn có thể đặt từ khóa “const” ở những nơi nào trong chương trình của mình?
Để trả lời câu hỏi trên khi làm việc với ngôn ngữ lập trình (ở đây là C++), bạn cần phải trả lời được câu hỏi: “Tôi cần giá trị nào trở thành không thay đổi được?”.
Ở đây, trong bài viết này, xin liệt kê ra một số nơi bạn có thể đặt từ const.
1. Khi khai báo một biến, nếu bạn đặt thêm từ const thì giá trị của biến đó sẽ không thể thay đổi được trong suốt phạm vi tồn tại của biến đó.
Ví dụ các khai báo sau:
const int x = 8;
int const y = 10;
Hai dạng khai báo trên là tương đương. Giá trị của hai biến x và y sẽ không thể tha đổi được.
2. Đối với biến con trỏ, bạn cần lưu ý đến hai điều: vùng nhớ con trỏ trỏ đến và giá trị của vùng nhớ đó.
Với các khai báo:
int x = 10, y = 20;
const int *px = &x;
Khi này, giá trị của vùng nhớ mà px đang trỏ đến là không thể thay đổi được thông qua thay đổi (*px). Do đó, ta có các câu lệnh sau:
*px = 15; // incorrect
px = &y; // correct
x = 15; // correct (Để ý rằng giá trị của x vẫn có thể được thay đổi, ta chỉ không thể thay đổi giá trị này thông qua px)
Nhưng với các khai báo sau:
int x = 10, y = 20;
int* const px = &x;
Khi này, giá trị của vùng nhớ mà px trỏ đến có thể được thay đổi thông qua việc thay đổi (*px) nhưng điều đặc biệt là ta không thể làm cho px trỏ đến một vùng nhớ khác. Ta có các câu lệnh sau:
*px = 15; // correct
px = &y; // incorrect
Với khai báo sau:
int x = 10;
const int* const px = &x;
Bạn không thể thay đổi nơi px đang trỏ đến và thông qua (*px) cũng không thể thay đổi giá trị vùng nhớ đó.
(phongtran88)
One Response
Thanks, bài viết của bạn hay lắm