1/ Khai báo một Hàm

C++ cung cấp một số hàm được định nghĩa trước, chẳng hạn như hàm main(), được sử dụng để thực thi mã. Nhưng các em cũng có thể tạo các hàm của riêng mình để thực hiện các công việc nhất định.

Cú pháp đơn giản

kieu_du_lieu tenHam() {
  // đoạn mã cần thực thi
}
  • tenHam: là tên của hàm, cách đặt tên giống như đặt tiên biến
  • kieu_du_lieu: là kiểu dữ liệu trả về của hàm như void, int, string... như đã học ở bài "Các kiểu dữ liệu trong C++". Riêng kiểu void có nghĩa là hàm không có giá trị trả về.

Ví dụ:

void xinChao() {
  cout << "Chao Viet Nam";
}

2/ Gọi một Hàm

Các hàm đã khai báo không được thực thi ngay lập tức. Chúng được "lưu để sử dụng sau", và sẽ được thực thi khi chúng được gọi.

Cú pháp

teHam();

Ví dụ

#include <iostream>
using namespace std;

void xinChao() {
  cout << "Toi la Viet Nam\n";
}

int main() {
  // goi ham xinChao lan thu nhat
  xinChao(); // ket qua: Toi la Viet Nam
  cout << "Hen gap lai\n";
  // goi ham xinChao lan thu hai
  xinChao(); // ket qua: Toi la Viet Nam
  return 0;
}

3/ Khai báo và định nghĩa Hàm

  • Các hàm mà các em khai báo được gọi là hàm user-defined
  • Các hàm được định nghĩa trước, chẳng hạn như hàm main() được gọi là hàm pre-defined

Một hàm được chia làm hai phần: phần khai báo và phần định nghĩa

kieu_du_lieu tenHam() { // Phần khai báo (Declaration)
   // Phần định nghĩa (Definition)
}
  • Phần khai báo: là kieu_du_lieu tenHam()
  • Phần định nghĩa: là đoạn mã cần thực thi

Các hàm user-defined phải đặt trước các hàm pre-defined, nếu không sẽ xảy ra lỗi

Ví dụ khi biên dịch đoạn mã bên dưới, sẽ xảy ra lỗi "error: ‘xinChao’ was not declared in this scope"

#include <iostream>
using namespace std;

int main() {
  xinChao();
  return 0;
}

void xinChao() {
  cout << "Toi la Viet Nam";
}

Tuy nhiên, các em có thể tách biệt phần khai báo và phần định nghĩa của hàm để tối ưu hóa mã.

Các em sẽ thường thấy trong các chương trình C++ có "phần khai báo" hàm nằm trên hàm main() và "phần định nghĩa" hàm nằm bên dưới hàm main(). Điều này sẽ làm cho mã được tổ chức tốt hơn và dễ đọc hơn.

Ví dụ:

#include <iostream>
using namespace std;

// Phan khai bao ham
void xinChao();

int main() {
  xinChao();
  return 0;
}

// Phan dinh nghia ham
void xinChao() {
  cout << "Toi la Viet Nam";
}