Lập trình C++ cơ bản
Con trỏ trong C++
1. Khái niệm
Một con trỏ là một biến mà trong đó giá trị của nó là địa chỉ của biến khác. Ví dụ như địa chỉ của vùng nhớ. Giống như các biến và hằng số, bạn phải khai báo con trỏ trước khi bạn có thể sử dụng nó để lưu trữ bất kì địa chỉ của biến nào. Dạng tổng quát của việc khai báo con trỏ như sau:
VD
|
Kết quả:
Dia chi cua bien1 la: 0x6ffe4c
Dia chi cua bien2 la: 0x6ffe40
2. Khai báo con trỏ
|
Trong đó:
- kieu_du_lieu là kiểu dữ liệu cơ bản con trỏ, nó là kiểu hợp lệ trong ngôn ngữ C++
- ten_bien là tên giá trị của con trỏ.
- Phần ký tự * sử dụng trong khai báo con trỏ là bắt buộc. Ký tự này để quy định biến đó là con trỏ
|
3. Cách sử dụng con trỏ trong C++
Con trỏ được sử dụng theo hai cách:
- Dùng con trỏ để lưu địa chỉ của biến để thao tác.
- Lấy giá trị của biến do con trỏ trỏ đến để thao tác.
3.1. Dùng con trỏ để lưu địa chỉ của biến
Bản thân con trỏ sẽ được trỏ vào địa chỉ của một biến có cùng kiểu dữ liệu với nó. Cú pháp của phép gán như sau:
|
Trong phép toán này, tên con trỏ không có dấu “*”. Ví dụ:
|
con trỏ px có kiểu int trỏ vào địa chỉ của biến x có kiểu nguyên. Phép toán &<ten_bien> sẽ cho địa chỉ của biến tương ứng.
3.2. Lấy giá trị của biến do con trỏ trỏ đến
Phép lấy giá trị của biến do con trỏ trỏ đến được thực hiện bằng cách gọi tên:
|
Trong phép toán này, phải có dấu con trỏ “*”. Nếu không có dấu con trỏ, sẽ trở thành phép lấy địa chỉ của biến do con trỏ trỏ tới. Ví dụ:
|
Quá trình trên diễn ra như sau:
4. Ví dụ
|
Kết quả:
Dia chi luu tru cua bien con tro ip: 0x6ffe3c
Gia tri cua bien *ip: 20
Gia tri cua bien x: 20
Gia tri cua bien y: 20
5. Phép gán giữa các con trỏ
Các con trỏ cùng kiểu có thể gán cho nhau thông qua phép gán và lấy địa chỉ con trỏ:
|
Trong phép gán giữa các con trỏ, bắt buộc phải dùng phép lấy địa chỉ của biến do con trỏ trỏ tới (không có dấu “*” trong tên con trỏ) mà không được dùng phép lấy giá trị của biến do con trỏ trỏ tới.
Hai con trỏ phải cùng kiểu. Trong trường hợp hai con trỏ khác kiểu, phải sử dụng các phương thức ép kiểu tương tự như trong phép gán các biến thông thường có kiểu khác nhau.
Ví dụ:
|
Quá trình diễn ra như sau:
con trỏ py cũng trỏ vào địa chỉ của biến x như con trỏ px. Khi đó *py cũng có giá trị 12 giống như *px và là giá trị của biến x.