Tải bản đầy đủ (.pdf) (5 trang)

Tìm hiểu hàm và thư viện lập trình phần 7 ppt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (161.59 KB, 5 trang )

31
© 2004, HOÀNG MINH SƠN
Chương 3: Hàm và thư viện
Lý do trả về con trỏ hoặc tham chiếu
 Tương tự như lý do truyền ₫ịachỉ hoặctruyềntham
chiếu:
—Tránhsaochépdữ liệulớnkhôngcầnthiết
— Để có thể truy cậptrựctiếpvàthay₫ổigiátrị₫ầura
 Có thể trả về con trỏ hoặcthamchiếuvào₫âu?
— Vào biếntoàncục
— Vào tham số truyền cho hàm qua ₫ịachỉ hoặcqua tham
chiếu
— Nói chung: vào vùng nhớ mà còn tiếptụctồntại sau khi kết
thúc hàm
 Con trỏ lạiphứctạpthêmmột chút?
32
© 2004, HOÀNG MINH SƠN
Chương 3: Hàm và thư viện
Phảnvídụ: trả về con trỏ
int* f(int* p, int n) {
int Max = *p;
int *p2 = p + n;
while (p < p2) {
if (*p > Max)
Max = *p;
++p;
}
return &Max;
}
void main() {
int s[5] = { 1, 2, 3, 4, 5};


int *p = FindMax(s,5); // get invalid address
}
33
© 2004, HOÀNG MINH SƠN
Chương 3: Hàm và thư viện
Các ví dụ nghiên cứu: Đúng / sai?
int* f1(int a) {

return &a;
}
int& f2(int &a) {

return a;
}
int f3(int &a) {

return a;
}
int* f4(int *pa) {

return pa;
}
int f5(int *pa) {

return *pa;
}
int& f6(int *pa) {

return *pa;
}

int& f7(int a) {

return a;
}
int *pa;
int* f8() {

return pa;
}
34
© 2004, HOÀNG MINH SƠN
Chương 3: Hàm và thư viện
3.4 Thiếtkế hàm và thư viện
 Viếtmộtchương trình chạytốt ₫ãkhó, viếtmộtthư
việnhàmtốtcònkhóhơn!
 Mộtthư việnhàm₫ịnh nghĩa:
—mộttậphợp các hàm (có liên quan theo mộtchủ₫ềchức
năng)
—những kiểudữ liệusử dụng trong các hàm
—mộtsố biếntoàncục(rấthạnchế)
 Mộtthư việnhàmtốtcầnphải:
—Thựchiệnnhững chứcnăng hữuích
— Đơngiản, dễ sử dụng
—Hiệusuấtvà₫ộ tin cậycao
—Trọnvẹn, nhấtquánvà₫ồng bộ
35
© 2004, HOÀNG MINH SƠN
Chương 3: Hàm và thư viện
Thiếtkế hàm
 Phân tích yêu cầu:

— Làm rõ các dữ kiện(₫ầuvào) vàkếtquả (₫ầura)
— Tìm ra các chứcnăng cầnthựchiện
 Đặt tên hàm: ngắngọn, ý nghĩaxác₫áng, tự miêu tả
—Hàmchỉ hành ₫ộng: Chọntênhàmlàmột ₫ộng từ kếthợpvớikiểu
₫ốitượng chủ thể, ví dụ printVector, displayMatrix,
addComplex, sortEventQueue, filterAnalogSignal,
— Hàm truy nhậpthuộc tính: Có thể chọnlà₫ộng từ hoặcdanhtừ kết
hợpkiểu ₫ốitượng chủ thể, ví dụ length, size, numberOfColums,
getMatrixElem, putShapeColor
— Trong C++ nhiềuhàmcóthể giống tên (nạpchồng tên hàm), có thể
chọntênngắn, ví dụ sort, print, display, add, putColor, getColor =>
nguyên tắc ₫a hình/₫axạ theo quan ₫iểmh
ướng ₫ốitượng
— Trong C++ còn có thể₫ịnh nghĩa hàm toán tử₫ểcó thể sử dụng các
ký hiệutoántử₫ịnh nghĩasẵnnhư *, /, +, - thay cho lờigọihàm.

×