ĐỊ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<
13 trang |
Chia sẻ: thanhle95 | Lượt xem: 512 | Lượt tải: 1
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