Xem mẫu
- CHƯƠNG 2
LẬP TRÌNH CON TRỎ
TRẦN MINH THÁI
[e] minhthai@itc.edu.vn
[w] www.minhthai.edu.vn1
- ĐỊ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;
Địa chỉ Địa chỉ
biến x biến a
Byte 1 Byte 100
Các ô Các ô
nhớ của Byte 2 nhớ của Byte 101
biến x biến a
Byte 3 Byte 102
Byte 4 Byte 103
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() Kết quả
{ Dia chi cua bien x = 0014FC00
int x=7; Dia chi cua bien y = 0014FBF4
float y=10.5;
cout
- 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ỏ
Kiểu dữ liệu * TênConTrỏ
• Ví dụ:
int *px, y;
float *pm, n;
• Cách lấy giá trị của con trỏ
* TênConTrỏ
5
- VÍ DỤ
void main()
{
int *px, y;
Lấy địa chỉ của biến
float *pa, b; y gán vào px
y=10;
b=14.5; Lấy giá trị của con
px=&y; trỏ px
pa=&b;
cout
- 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];
…
pa 0 1 2 3 4 5 6 … 49 8
- CON TRỎ VÀ MẢNG MỘT CHIỀU
void NhapMang(int a [], int n)
{
for (int i = 0; i < n; i++)
{
cout
- 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
- 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
nguon tai.lieu . vn