1/ Tham số và đối số
Cú pháp khai báo hàm với tham số
kieu_du_lieu tenHam(kieu_du_lieu_1 tham_so_1, kieu_du_lieu_2 tham_so_2) {
// đoạn mã cần thực thi
}
- Cách đặt tên các tham số như
tham_so_1
,tham_so_2
giống như cách đặt tên biến mà các em đã học - Các em có thể truyền vào 1, 2, 3, 4, ... 100 tham số nếu như các em muốn
kieu_du_lieu_1
,kieu_du_lieu_2
: nhưint
,string
... mà các em đã học
Ví dụ
#include <iostream>
#include <string>
using namespace std;
void hocSinh(string ten, int tuoi) {
cout << ten << "\t" << tuoi << "\n";
}
int main() {
cout << "DANH SACH HOC SINH CUTE" << "\n";
cout << "Ten" << "\t" << "Tuoi" << "\n";
cout << "---oo0oo---\n";
hocSinh("Mit", 12);
hocSinh("Oi", 13);
hocSinh("Xoai", 10);
return 0;
}
Kết quả:
DANH SACH HOC SINH CUTE Ten Tuoi ---oo0oo--- Mit 12 Oi 13 Xoai 10
Khi một tham số
được truyền cho hàm, lúc đó nó được gọi là một đối số
. Vì vậy, từ ví dụ trên: ten
, tuoi
được gọi là các tham số, Mit
, Oi
, Xoai
, 12
, 13
, 10
là các đối số. Các tham số được truyền vào phải đúng như thứ tự mà nó được khai báo ở hàm, như ví dụ trên thì các em phải truyền theo thứ tự là ten
rồi mới đến tuoi
.
2/ Giá trị tham số mặc định
Các em có thể sử dụng giá trị tham số mặc định bằng cách sử dụng dấu bằng =
Nếu các em gọi hàm mà không có đối số truyền vào, nó sẽ sử dụng giá trị mặc định, ví dụ
#include <iostream>
#include <string>
using namespace std;
void hocSinh(string ten = "Dua Leo", int tuoi = 18) {
cout << ten << "\t" << tuoi << "\n";
}
int main() {
hocSinh(); // ket qua: Dua Leo 18
hocSinh("Bap", 10); // ket qua: Bap 10
return 0;
}
Giá trị mặc định ở đây là Dua Leo
và 18
3/ Giá trị trả về
Từ khóa void
, được sử dụng trong các ví dụ trước, có nghĩa là hàm không có giá trị trả về. Nếu các em muốn hàm trả về một giá trị, các em có thể sử dụng kiểu dữ liệu như int
, string
... thay vì void
và sử dụng từ khóa return
bên trong hàm.
Ví dụ
#include <iostream>
#include <string>
using namespace std;
int mayTinh(int x, int y) {
return x + y;
}
int main() {
int tong = mayTinh(2, 6);
cout << "Tong cua hai 2 va 6: " << tong << "\n";
cout << "Tong cua hai 8 va 4: " << mayTinh(8, 4) << "\n";
return 0;
}
Kết quả:
Tong cua hai 2 va 6: 8 Tong cua hai 8 va 4: 12
Trong ví dụ trên, int
là kiểu dữ liệu trả về của hàm mayTinh
, giá trị trả về là x + y
cũng phải đảm bảo là kiểu int
. Tương tự cho các kiểu dữ liệu trả về khác.
4/ Tham số là Tham chiếu
Trong các ví dụ ở trước, chúng ta đã sử dụng các biến bình thường khi truyền vào các tham số cho một hàm. Các em cũng có thể truyền một tham chiếu &
vào hàm (chúng ta đã học về tham chiếu ở bài "Tham chiếu và con trỏ").
Ví dụ
#include <iostream>
using namespace std;
void hoanDoiGiaTri(int &x, int &y) {
int z = x;
x = y;
y = z;
}
int main() {
int so1 = 4;
int so2 = 8;
cout << "Truoc khi hoan doi: " << "\n";
cout << so1 << so2 << "\n";
hoanDoiGiaTri(so1, so2);
cout << "Sau khi hoan doi: " << "\n";
cout << so1 << so2 << "\n";
return 0;
}
Kết quả:
Truoc khi hoan doi: 48 Sau khi hoan doi: 84
Trong ví dụ trên, khi truyền hai đối số so1
và so2
vào hàm hoanDoiGiaTri
, thì x
và y
lúc này chỉ là tham chiếu đến so1
và so2
5/ Tham số là Mảng
Tham số của hàm cũng có thể là một mảng.
Ví dụ
#include <iostream>
using namespace std;
void vuonTraiCay(string traiCay[4]) {
for (int i = 0; i < 4; i++) {
cout << traiCay[i] << "\n";
}
}
int main() {
string traiCay[4] = {"Mit", "Oi", "Xoai", "Chuoi"};
vuonTraiCay(traiCay);
return 0;
}
Kết quả:
Mit Oi Xoai Chuoi