Bài giảng Kỹ thuật lập trình - Bài 2: C/C++ nâng cao cung cấp cho người học các kiến thức về con trỏ, quản lý bộ nhớ, hàm và tham số, đa năng hóa. Đây là một tài liệu hữu ích dành cho các bạn sinh viên đang theo học môn học này dùng làm tài liệu học tập, nghiên cứu.
Trịnh Thành Trung (ThS) trungtt@soict.hust.edu.vn Bài C/C++ nâng cao Nội dung Con trỏ Quản lý nhớ Hàm tham số Đa hóa Con trỏ Pointer Con trỏ Pointer ▪ Khái niệm ▫ Giá trị biến lưu trữ nhớ máy tính, truy cập tới giá trị qua tên biến, đồng thời qua địa chúng nhớ ▪ Thực chất biến mà nội dung địa đối tượng khác (biến, hàm, số) ▫ Việc sử dụng trỏ cho phép ta truy nhập tới đối tượng gián tiếp qua địa ▪ Có nhiều kiểu biến với kích thước khác nhau, nên có nhiều kiểu trỏ ▫ Ví dụ: Con trỏ int để trỏ tới biến hay hàm kiểu int Con trỏ Pointer ▪ Khai báo trỏ : ▫ Syntax : dataType * PointerName; Chỉ trỏ ▪ Sau khai báo, ta trỏ NULL (chưa trỏ tới đối tượng nào) ▫ Để sử dụng trỏ, ta dùng toán tử lấy địa & PointerName = &VarName Ví dụ int a; int *p; a=10; p= &a; ▫ Để lấy nội dung biến trỏ trỏ tới, ta dùng toán tử lấy nội dung * * PointerName Ví dụ int i,j,*p; i= 5; p= & i; j= *p; *p= j+2; 100 Gán i=5 j 104 p 100 gán p = & i i *p = j+2 gán j = *p 102 j 104 100 p i 102 j 104 p 100 i 102 100 102 i j 104 100 p 100 i 102 j 104 100 p Chú ý ▪ Một trỏ trỏ tới đối tượng kiểu ▪ Tốn tử ngơi * & có độ ưu tiên cao tốn tử số học ▪ Ta viết *p cho nơi có đối tượng mà trỏ tới xuất int x = 5, *p; p = & x; x=x+10; ~ *p = *p+10; ▪ Ta gán nội dung trỏ cho nhau: hai trỏ trỏ tới đối tượng int x=10, *p, *q; p = &x; q = p; => p q trỏ tới x Thứ tự ưu tiên phép toán Các phép toán trỏ ▪ Cộng trừ với số nguyên n trả trỏ kiểu, địa trỏ tới đối tượng khác nằm cách đối tượng bị trỏ n phần tử ▪ Trừ trỏ cho ta khoảng cách (số phần tử) trỏ ▪ KHƠNG có phép cộng, nhân, chia trỏ ▪ Có thể dùng phép gán, so sánh trỏ ▫ Chú ý đến tương thích kiểu Ví dụ char *pchar; short *pshort; long *plong; pchar ++; pshort ++; plong ++; Giả sử địa ban đầu tương ứng trỏ 100, 200 300, kết ta có giá trị 101, 202 304 tương ứng Nếu viết tiếp plong += 5; pchar -=10; pshort +=5; => => => plong = 324 pchar = 91 pshort = 212 Phép tham chiếu Khi hàm trả tham chiếu, gọi hàm phía bên trái phép gán #include int X = 4; int & MyFunc() { return X; } int main() { cout