Menu
CoddyTech

Con trỏ hằng

Bài học 5 trên 14 trong khóa học Con trỏ trong C++ của Coddy.

Con trỏ hằng là con trỏ có giá trị (địa chỉ bộ nhớ mà nó trỏ đến) không thể thay đổi sau khi khởi tạo. Tuy nhiên, bạn có thể thay đổi giá trị tại vị trí bộ nhớ mà nó trỏ đến. Có hai loại con trỏ chính khi nói đến con trỏ hằng:

  • Con trỏ trỏ đến hằng số : trỏ đến một giá trị hằng số
  • Con trỏ hằng : luôn trỏ đến một giá trị

Vậy, hai loại này khác nhau thế nào?


1. Con trỏ trỏ đến hằng số

Loại con trỏ này trỏ đến một giá trị hằng số. Bạn không thể sửa đổi giá trị đó thông qua con trỏ. Điều này có nghĩa là đây là một con trỏ thông thường, chỉ trỏ đến một giá trị hằng số. Với con trỏ này, bạn có thể thay đổi địa chỉ mà nó trỏ đến.

int a = 5, b = 10;
// Con trỏ đến một số nguyên hằng
int const * ptr = &a;
 
// Thao tác này hợp lệ:
ptr = &b; // Thay đổi địa chỉ
 
// Thao tác này không hợp lệ:
*ptr = 10; // Cố thay đổi giá trị hằng

2. Con trỏ hằng

Con trỏ hằng trỏ đến một giá trị không phải hằng số, nhưng bản thân con trỏ không thể được thay đổi để trỏ đến một địa chỉ khác. Địa chỉ mà nó trỏ đến là cố định.

int a = 5, b = 10;
// Con trỏ hằng trỏ tới một số nguyên (integer)
int * const ptr = &a;

// Thao tác này hợp lệ:
*ptr = 10; // Thay đổi giá trị không phải hằng số

// Thao tác này không hợp lệ:
ptr = &b; // Cố thay đổi địa chỉ không thể thay đổi

Như bạn thấy, từ khóa const được đặt trước dấu * khi khai báo con trỏ trỏ đến một giá trị hằng số và đặt sau dấu * khi khai báo con trỏ hằng trỏ đến một giá trị không phải hằng số. Bạn cũng có thể kết hợp cả hai để tạo thành con trỏ hằng trỏ đến một giá trị hằng số bằng cách dùng hai từ khóa const, một từ khóa trước và một từ khóa sau dấu hoa thị, nhưng trường hợp này ít khi cần dùng.

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

challenge icon

Thử thách

Dễ

Đọc hai số từ đầu vào, tạo một con trỏ hằng số constPtr và một con trỏ đến hằng số ptrConst, khởi tạo constPtr để trỏ đến số thứ nhất rồi đổi giá trị của nó thành số thứ hai, đồng thời đặt địa chỉ của ptrConst để nó trỏ đến số thứ hai

Tự làm thử

#include <iostream>

using namespace std;

int main() {

    // Viết code ở đây


    // KHÔNG THAY ĐỔI ĐOẠN CODE BÊN DƯỚI
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;
    if(&a == constPtr)
        cout << "&a == constPtr" << endl;
    if(&b == ptrConst)
        cout << "&b == ptrConst" << endl;

    return 0;
}

Tất cả bài học trong Con trỏ trong C++

Tự luyện tập: Trình biên dịch C++ online