[r]
(1)Giới Thiệu Lập Trình
Con Trỏ
(2)Nội Dung
Con trỏ
Biến kiểu trỏ Quản lý vùng nhớ Toán tử trỏ
Mảng động
Khai báo & sử dụng
(3)Giới Thiệu
Định nghĩa:
Địa vùng nhớ máy tính biến Vùng nhớ máy tính
Chia nhỏ thành byte
Đánh số thứ tự (hệ 16)
Địa sử dụng làm tên cho biến Con trỏ sử dụng
(4)Biến Con Trỏ
Con trỏ “kiểu liệu” Kiểu địa vùng nhớ
Có thể dùng biến để lưu giá trị kiểu trỏ Không phải kiểu int, double
Địa vùng nhớ dùng lưu liệu kiểu
int, double
Ví dụ: double * p;
(5)Biến Con Trỏ – Khai Báo
Khai báo trỏ giống biến kiểu liệu khác Thêm * vào trước tên biến
Ký hiệu * phải đặt trước biến trỏ Ví dụ: int *p1, *p2, v1, v2;
p1, p2 biến kiểu trỏ int v1, v2 biến kiểu int
(6)Địa Chỉ & Số Nguyên
Con trỏ địa
Địa số nguyên
Con trỏ KHÔNG số nguyên
C++ ép trỏ phải sử dụng địa Không thể sử dụng số nguyên
(7)Toán Tử &
Toán tử & trả địa biến
Dòng 4: đặt biến trỏ p tới biến v1 p địa v1
Dòng 5: đặt biến trỏ p tới biến v2 1 {
2 int *p, v1, v2; 3 v1 = 10; v2 = 20; 4 p = &v1;
5 p = &v2;
6 } 0x22ff32
(8)Toán Tử *
Toán tử * truy xuất giá trị vùng nhớ
quản lý (lưu) trỏ
Dòng 4: in 10 (giá trị biến v1, mà p tới) Dòng 6: in 20 (giá trị biến v2, mà p tới)
1 {
2 int *p, v1, v2; 3 v1 = 10; p = &v1; 4 cout << *p;
5 v2 = 20; p = &v2; 6 cout << *p;
(9)Toán Tử =
Gán giá trị
Dòng 3, 4: p tới v1, q tới v2
Dòng 5: sử dụng toán tử * truy cập vùng tới
nhớ trỏ quản lý
*p v1, *q v2, dòng 5 tương đương v1 = v2;
1 {
2 int v1 = 10, v2 = 20; 3 int *p = &v1;
4 int *p = &v2; 5 *p = *q;
6 } 0x22ff32
(10)Toán Tử =
Gán trỏ
Dòng 3, 4: p tới v1, q tới v2 Dòng 5: gán p q
p không quản lý v1
p q quản lý v2
1 {
2 int v1 = 10, v2 = 20; 3 int *p = &v1;
4 int *p = &v2; 5 p = q;
6 } 0x22ff32