Bài giảng Kỹ thuật lập trình - Chương 2: Lập trình con trỏ - Trần Minh Thái

ĐỊA CHỈ CỦA BIẾN (TT) • Địa chỉ của biến luôn luôn là một số nguyên (hệ hexa) dù biến đó chứa giá trị là số nguyên, số thực hay ký tự, • Cách lấy địa chỉ của biến: & tênbiến • Ví dụ: void main() { int x=7; float y=10.5; cout<<"Dia chi cua bien x = "<<&x<

pdf13 trang | Chia sẻ: thanhle95 | Lượt xem: 386 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Bài giảng Kỹ thuật lập trình - Chương 2: Lập trình con trỏ - Trần Minh Thái, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
CHƯƠNG 2 LẬP TRÌNH CON TRỎ 1 TRẦN MINH THÁI [e] minhthai@itc.edu.vn [w] www.minhthai.edu.vn ĐỊA CHỈ CỦA BIẾN Thông tin của một biến bao gồm: • Tên biến • Kiểu dữ liệu của biến • Giá trị của biến Mỗi biến sẽ được lưu trữ tại một vị trí xác định trong ô nhớ, nếu kích thước của biến có nhiều byte thì máy tính sẽ cấp phát một dãy các byte liên tiếp nhau, địa chỉ của biến sẽ lưu byte đầu tiên trong dãy các byte này 2 ĐỊA CHỈ CỦA BIẾN (TT) Ví dụ khai báo: float x; int a; Byte 1 Byte 2 Byte 3 Byte 4 Địa chỉ biến x Các ô nhớ của biến x Byte 100 Byte 101 Byte 102 Byte 103 Địa chỉ biến a Các ô nhớ của biến a 3 ĐỊA CHỈ CỦA BIẾN (TT) • Địa chỉ của biến luôn luôn là một số nguyên (hệ hexa) dù biến đó chứa giá trị là số nguyên, số thực hay ký tự, • Cách lấy địa chỉ của biến: & tênbiến • Ví dụ: void main() { int x=7; float y=10.5; cout<<"Dia chi cua bien x = "<<&x<<endl; cout<<"Dia chi cua bien y = "<<&y; } Kết quả Dia chi cua bien x = 0014FC00 Dia chi cua bien y = 0014FBF4 4 CON TRỎ • Con trỏ là một biến để chứa địa chỉ, có nhiều loại con trỏ tùy thuộc vào địa chỉ của mỗi loại kiểu biến • Cách khai báo con trỏ • Ví dụ: int *px, y; float *pm, n; • Cách lấy giá trị của con trỏ Kiểu dữ liệu * TênConTrỏ * TênConTrỏ 5 VÍ DỤ void main() { int *px, y; float *pa, b; y=10; b=14.5; px=&y; pa=&b; cout<<"Gia tri cua px = "<<*px<<endl; cout<<"Gia tri cua pa = "<<*pa; } Kết quả Gia tri cua px = 10 Gia tri cua pa = 14.5 Lấy địa chỉ của biến y gán vào px Lấy giá trị của con trỏ px 6 CẤP PHÁT VÀ GIẢI PHÓNG VÙNG NHỚ • Biến con trỏ phải được cấp phát vùng nhớ trước khi sử dụng Cú pháp: biến con trỏ = new ; • Giải phóng vùng nhớ Cú pháp: delete biến con trỏ; VD: int *a; a = new int; //Cấp phát vùng nhớ cho a . delete a; 7 CON TRỎ VÀ MẢNG MỘT CHIỀU • Khai báo * tên mảng; • Cấp phát vùng nhớ tên mảng = new [kích thước]; VD: int *pa; pa = new int[50]; 8 0 1 2 3 4 5 6 49pa CON TRỎ VÀ MẢNG MỘT CHIỀU 9 void NhapMang(int *a, int n) { for (int i = 0; i < n; i++) { cout << "Nhap gia tri o vi tri " << i << ": "; cin >> *(a + i); } } void NhapMang(int a [], int n) { for (int i = 0; i < n; i++) { cout << "Nhap gia tri o vi tri " << i << ": "; cin >> a[i]; } } CON TRỎ HÀM • Khai báo: (*Tên hàm)(tham số); VD: int *Tong(int a, int b); Thích hợp cho việc tùy chọn (switch) gọi thực hiện trong danh sách các hàm 10 CON TRỎ HÀM int ChuVi(int a, int b) { return (a + b) * 2; } int DienTich(int a, int b) { return a*b; } int Tinh(int a, int b, int (*Ham)(int, int)) { int kq = (*Ham)(a, b); return kq; } 11 CON TRỎ HÀM void main() { int a = 10, b = 6; int (*Ham)(int, int) = ChuVi; int p = Tinh(a, b, ChuVi); cout << "Chu vi cua hcn = " << p; } 12 BÀI TẬP Dùng kỹ thuật con trỏ hàm, viết chương trình tính tổng, hiệu, tích và thương của hai phân số phụ thuộc vào người dùng chọn chức năng nào. 13