Chương trình con – Hàm là một nhóm lệnh, yêu cầu chương trình phải hoàn thành một công việc nào đó gồm hai loại:
• Hàm có kiểu trả lại (trả lại dữ liệu thuộc kiểu dữ liệu của hàm)
• Hàm không có kiểu trả lại (còn gọi là hàm trả lại kiểu void)
• Tham số: Có thể là tham trị hoặc tham chiếu (tham biến)
kieu_du_lieu_tra_lai ten_cua_ham(cac_tham_so_cua_ham)
{
noi_dung_cua_ham;
......
return kieu_du_lieu_tra_lai; // neu ham khong co kieu tra lai thi khong co lenh nay
}
• Ví dụ Hàm có kiểu trả lại: Tính tổng hai số nguyên int a và b. Kiểu trả lại là int.
int Tong(int a, int b)
{
int S = 0;
S = a + b;
return S;
}
• Ví dụ Hàm không có kiểu trả lại: Xuất tổng hai số nguyên a và b ra màn hình. Kiểu trả lại là void.
void Xuat(int a, int b)
{
int T = Tong(a, b);
cout<<"Tong cua hai so nguyen "<<a<<" va "<<b<<" la: "<<T;
}
#include <bits/stdc++.h>using namespace std;
int Tong(int a, int b)
{
int S = 0;
S = a + b;
return S;
}void Xuat(int a, int b)
{
int T = Tong(a, b);
cout << T;
}int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);Xuat(8, 9); return 0;
}
Khi gọi một hàm, dữ liệu có thể được truyền vào hàm theo hai cách:
* Ví dụ 1: Truyền tham trị
#include <bits/stdc++.h>
using namespace std;
void Tang(int x)
{
x++;
}
int main()
{
int a = 5;
Tang(a);
cout << a;
return 0;
}
Kết quả:
5
Biến a không thay đổi vì hàm chỉ nhận một bản sao của a.
* Ví dụ 2: Truyền tham chiếu
#include <bits/stdc++.h>
using namespace std;
void Tang(int &x)
{
x++;
}
int main()
{
int a = 5;
Tang(a);
cout << a;
return 0;
}
Kết quả:
6
Biến a thay đổi vì hàm nhận trực tiếp biến a.
* So sánh tham trị và tham chiếu
| Đặc điểm | Tham trị | Tham chiếu |
|---|---|---|
| Cách khai báo | int x |
int &x |
| Dữ liệu truyền vào | Bản sao của biến | Biến gốc |
| Thay đổi biến gốc | Không | Có |
| Khi nào nên dùng? | Chỉ cần đọc dữ liệu. | Cần thay đổi dữ liệu trong hàm. |
Ghi nhớ:
- Tham trị (int x) chỉ truyền bản sao của biến vào hàm.
- Tham chiếu (int &x) truyền trực tiếp biến gốc vào hàm.
- Muốn thay đổi giá trị của biến sau khi gọi hàm, cần sử dụng tham chiếu.
- Dấu & đặt trước tên tham số cho biết tham số đó được truyền theo tham chiếu.