Khai báo và gọi hàm trong C | Laptrinhcanban.com

Khai báo và gọi hàm trong C

Hướng dẫn cách khai báo và gọi hàm trong C. Bạn sẽ học được cách khai báo hàm trong C, cũng như cách gọi hàm trong C đã được khai báo sau bài học này.

Khai báo hàm trong C

Trong bài viết Hàm trong C bạn đã biết có 3 loại hàm trong C, trong đó có một loại hàm mà chúng ta có thể tự tạo hàm để sử dụng trong chương trình, đó chính là hàm C do người dùng định nghĩa.

Khi muốn sử dụng một hàm C do người dùng định nghĩa, trước hết chúng ta cần khai báo hàm trong C.

Chúng ta viết kiểu dữ liệu trả về từ hàm trước, sau đó đến tên hàm, rồi kiểu và tên của các tham số sử dụng trong hàm, và cuối cùng là các xử lý trong hàm nằm giữa cặp ngoặc nhọn {} cùng với giá trị trả về, với cú pháp hàm như sau:

kiểu trả về tên hàm (kiểu 1 tham số 1, kiểu 2 tham số 2, ...){
    Câu lệnh 1 trong hàm;
    Câu lệnh 2 trong hàm;
    ...

    return giá trị trả về
}

Trong đó:

  • kiểu trả về là kiểu dữ liệu của giá trị trả về từ hàm, ví dụ như int, char. Nếu hàm không trả về giá trị thì chúng ta cần chỉ định kiểu [void] để thay thế.
  • tên hàm là một chuỗi ký tự dùng để đặt tên đại diện cho hàm.
  • tham số là các biến sử dụng trong khai báo hàm, cũng như để nhận đối số (các giá trị truyền vào) khi chúng ta gọi hàm.
  • return là từ khóa dùng để trả giá trị trả về từ hàm trong C
  • giá trị trả về là các đối tượng được trả về sau khi hàm được thực thi. Ví dụ như hàm có thể trả về một số, một chuỗi, hoặc một con trỏ v.v..

Ví dụ, chúng ta khai báo một hàm tính tổng hai số và trả về kết quả trong chương trình như sau:

int find_sum(int a,int b){
int sum = a + b;
return sum;
}

Lại nữa, nếu một hàm không cần nhận giá trị truyền vào từ bên ngoài thì chúng ta cũng có thể lược bỏ tham số khi khai báo hàm trong C như sau:

kiểu trả về tên hàm (){
    Câu lệnh 1 trong hàm;
    Câu lệnh 2 trong hàm;
    ...

    return giá trị trả về
}

Như ở ví dụ sau đây, chúng ta không sử dụng tham số khi khai báo hàm:

int find_sum(){
int sum = 1 + 2;
return sum;
}

Ngoài cách viết này, chúng ta cũng có thể chỉ định void bên trong đối số của hàm, nhằm biểu thị việc không có giá trị truyền vào hàm. Ví dụ:

int find_sum(void){
int sum = 1 + 2;
return sum;
}

Cuối cùng, return là lệnh dùng để trả về giá trị trong C, và hàm chứa lệnh return được gọi là hàm trả về giá trị trong C. Tuy nhiên nếu trong trường hợp không có giá trị nào cần trả về từ hàm thì chúng ta cũng có thể bỏ qua lệnh này.

Lưu ý là khi đó, chúng ta cũng cần thay thế kiểu giá trị trả về thành kiểu void nhằm biểu thị rõ một hàm không trả về giá trị. Ví dụ cụ thể:

void say_hi(){
printf("Hi!");
}

Bạn có thể tìm hiểu thêm về void trong C tại bài viết sau:

Gọi hàm trong C

Sau khi khai báo hàm trong C, chúng ta có thể sử dụng hàm đó nhiều lần trong chương trình bằng cách gọi hàm trong C với cú pháp sau đây:

tên hàm ( đối số 1, đối số 2,...);

Chúng ta viết tên hàm, sau đó đặt các đối số (các giá trị truyền vào khi gọi hàm) ở giữa cặp dấu ngoặc đơn () và cách nhau bởi dấu phẩy ,. Các giá trị của đối số sẽ được dùng để truyền tham số trong C.

Ví dụ, chúng ta khai báo và gọi hàm trong C như sau:

#include <stdio.h>

int find_sum(int a,int b){
int sum = a + b;
return sum;
}

int main(void){
find_sum(1,2);
find_sum(5,6);
return 0;
}

Lưu ý, chúng ta gọi các biến dùng để khai báo hàm là tham số, còn các giá trị thực truyền vào khi gọi hàm là đối số. Giá trị của các đối số sẽ được các tham số tương ứng nhận và thực hiện các xử lý ở bên trong hàm.
Việc các tham số bên trong hàm nhận các đối số từ bên ngoài hàm được gọi là truyền tham số trong C. Chi tiết về tham số và đối số trong C bạn có thể xem tại bài viết Hàm trong C

Sau khi gọi hàm trong C, một giá trị là kết quả của hàm sẽ được trả về. Giá trị trả về từ hàm có thể được gán vào biến để sử dụng như sau:

#include <stdio.h>

int find_sum(int a,int b){
int sum = a + b;
return sum;
}

int main(void){
int ketqua = find_sum(1,2);
printf("%d",ketqua);
return 0;
}
// 3

Trong trường hợp trong hàm được khai báo không chứa tham số, chúng ta cũng không thể truyền tham số vào hàm được. Khi đó chúng ta sẽ chỉ gọi hàm trong C bằng cách lược bỏ đối số đi như sau:

tên hàm ();

Ví dụ:

#include <stdio.h>

void say_hi(){
printf("Hi!");
}

int main(void){
say_hi();

return 0;
}
// Hi!

Lưu ý cuối cùng khi gọi hàm trong C, nếu như bạn gọi một hàm mà hàm đó vốn chưa được khai báo, lỗi implicit declaration of function sau đây sẽ xảy ra:

say_hello();

>>warning: implicit declaration of function ‘say_hello’ [-Wimplicit-function-declaration]

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn về cách khai báo và gọi hàm trong C rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về C trong các bài học tiếp theo.

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.