Chương 4 Hàm
6.3. Biến con trỏ
Biến con trỏ là một loại biến đặc biệt, được dùng để lưu giữ địa chỉ ô nhớ. Tức là, giá trị của chúng là địa chỉ của ô nhớ trong bộ nhớ. Hay nói một cách hình tượng, biến con trỏ chỉ đến một ô nhớ trong bộ nhớ. Biến con trỏ được khai báo như sau:
data_type *ptr;
trong đó data_type là kiểu của dữ liệu được lưu ở ô nhớ mà con trỏ ptr sẽ chỉ
đến. Để truy nhập dữ liệu tại ô nhớ mà biến con trỏ chỉ đến ta sử dụng toán tử *. Hình 6.3 minh họa về việc khai báo và sử dụng biến con trỏ. Trong ví dụ, ta khai báo một biến con trỏ ptrApples dùng để lưu giữ địa chỉ ô nhớ của biến apples. Lệnh
ptrApples = &apples;
sẽ gán địa chỉ của biến apples cho biến con trỏ ptrApples và tạo hiệu ứng tương tự như trong Hình 6.2
Địa chỉ
bộ nhớ
Nội dung
ô nhớ cỡ 4 byte Tên biến
..
0x2a52dc ..
0x2a52e0 0x2a52ec ptrApples
0x2a52e4 .. 0x2a52e8 ..
0x2a52ec 0x000009 apples
..
Lưu ý, các tác động trên ô nhớ được chỉ đến bởi biến con trỏ ptrApples cũng chính là các tác động được thực hiện trên biến apples và ngược lại. Cụ thể là lệnh
apples++;
sẽ tăng giá trị của biến apples lên một, đồng nghĩa với việc tăng giá trị ở ô nhớ do biến con trỏ ptrApples chỉ đến lên 1.
Tương tự, lệnh
*ptrApples += 1;
sẽ tăng giá trị tại ô nhớ mà biến con trỏ ptrApples thêm 1, đồng nghĩa với việc tăng giá trị của biến apples thêm 1.
#include <iostream> using namespace std;
int main(int argc, char *argv[]) {
int apples = 9;
cout << "apples: " << apples << endl;
cout << "Address of apples: " << &apples << endl; int *ptrApples;
ptrApples = &apples;
cout << "ptrApples: " << ptrApples << endl;
cout << "Value at ptrApples: " << *ptrApples << endl; apples ++;
cout << "apples: " << apples << endl;
cout << "Value at ptrApples: " << *ptrApples << endl; *ptrApples += 1;
cout << "apples: " << apples << endl;
cout << "Value at ptrApples: " << *ptrApples << endl; return 0;
}
Kết quả chạy chương trình apples: 9
Address of apples: 0x2a52ec ptrApples: 0x2a52ec Value at ptrApples: 9 apples: 10 Value at ptrApples: 10 apples: 11 Value at ptrApples: 11
Hình 6.3: Khai báo và sử dụng biến con trỏ.