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

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

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 (160.39 KB, 5 trang )

26
© 2004, HOÀNG MINH SƠN
Chương 3: Hàm và thư viện
Thử ví dụ hàm swap
#include <iostream.h>
void swap(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
void main() {
int x = 5, y = 10;
swap(x,y);
cout << "Now x is " << x << ", y is " << y;

}
27
© 2004, HOÀNG MINH SƠN
Chương 3: Hàm và thư viện
Khi nào sử dụng truyền tham chiếu?
 Chỉ trong C++
 Khi cầnthay₫ổi"biến ₫ầuvào" (truynhậptrựctiếp
vào ô nhớ, không qua bảnsao)
 Mộtthambiếnthamchiếucóthể₫óng vai trò là ₫ầu
ra (chứakếtquả), hoặccóthể vừalà₫ầuvàovà₫ầu
ra
 Khi kích cỡ kiểudữ liệulớn=> tránhsaochépdữ liệu
vào ngănxếp, ví dụ:
void copyData(const Student& sv1, Student& sv2) {
sv2.birthday = sv1.birthday;


}
28
© 2004, HOÀNG MINH SƠN
Chương 3: Hàm và thư viện
3.3.4 Kiểutrả về
 Kiểutrả về: gầnnhư tùy ý, chỉ không thể trả về trực
tiếpmộtmảng
 Về nguyên tắc, có thể trả về kiểu:
—Giátrị
—Con trỏ
—Thamchiếu
 Tuy nhiên, cầnrấtthậntrọng vớitrả về₫ịachỉ hoặc
tham chiếu:
— Không bao giờ trả về con trỏ hoặc tham chiếu vào biếncục
bộ
— Không bao giờ trả về con trỏ hoặc tham chiếu vào tham
biếntruyềnqua giátrị
 Vớingườilập trình ít có kinh nghiệm: chỉ nên trả về
kiểugiátrị
29
© 2004, HOÀNG MINH SƠN
Chương 3: Hàm và thư viện
Cơ chế trả về
int SumInt(int a, int b) {
int k = 0;
for (int i=a; i <= b; ++i)
k +=i;
return k;
}
void main() {

int x = 5, k = 0;
k = SumInt(x,10);

}
SP
x = 5
k =0
Ngănxếp
SP
a = 5
b = 10
k => 45
45
k = 45
30
© 2004, HOÀNG MINH SƠN
Chương 3: Hàm và thư viện
Trả về con trỏ
 Viếthàmtrả về₫ịachỉ củaphầntử lớnnhấttrongmộtmảng:
int* FindMax(int* p, int n) {
int *pMax = p;
int *p2 = p + n;
while (p < p2) {
if (*p > *pMax)
pMax = p;
++p;
}
return pMax;
}
void main() {

int s[5] = { 1, 2, 3, 4, 5};
int *p = FindMax(s,5);
}

×