returnType functionName[type1 argument1, type2 argument2, ...];2
returnType functionName[type1 argument1, type2 argument2, ...];3
returnType functionName[type1 argument1, type2 argument2, ...];4
returnType functionName[type1 argument1, type2 argument2, ...];5
C cho phép bạn xác định các chức năng theo nhu cầu của bạn. Các hàm này được gọi là hàm do người dùng định nghĩa. Ví dụ
Giả sử, bạn cần tạo một hình tròn và tô màu nó tùy thuộc vào bán kính và màu sắc. Bạn có thể tạo hai chức năng để giải quyết vấn đề này
- chức năng
returnType functionName[type1 argument1, type2 argument2, ...];
6 - chức năng
returnType functionName[type1 argument1, type2 argument2, ...];
7
Thí dụ. Hàm do người dùng định nghĩa
Đây là một ví dụ để thêm hai số nguyên. Để thực hiện tác vụ này, chúng tôi đã tạo một
returnType functionName[type1 argument1, type2 argument2, ...];8 do người dùng xác định
#include
int addNumbers[int a, int b]; // function prototype
int main[]
{
int n1,n2,sum;
printf["Enters two numbers: "];
scanf["%d %d",&n1,&n2];
sum = addNumbers[n1, n2]; // function call
printf["sum = %d",sum];
return 0;
}
int addNumbers[int a, int b] // function definition
{
int result;
result = a+b;
return result; // return statement
}
chức năng nguyên mẫu
Nguyên mẫu hàm chỉ đơn giản là phần khai báo của hàm xác định tên, tham số và kiểu trả về của hàm. Nó không chứa thân hàm
Nguyên mẫu hàm cung cấp thông tin cho trình biên dịch mà sau này hàm có thể được sử dụng trong chương trình
Cú pháp của nguyên mẫu hàm
returnType functionName[type1 argument1, type2 argument2, ...];
Trong ví dụ trên,
returnType functionName[type1 argument1, type2 argument2, ...];9 là nguyên mẫu hàm cung cấp thông tin sau cho trình biên dịch
- tên của chức năng là
returnType functionName[type1 argument1, type2 argument2, ...];
8 - kiểu trả về của hàm là
returnType functionName[type1 argument1, type2 argument2, ...];
1 - hai đối số kiểu
returnType functionName[type1 argument1, type2 argument2, ...];
1 được truyền cho hàm
Nguyên mẫu hàm không cần thiết nếu hàm do người dùng định nghĩa được xác định trước hàm
returnType functionName[type1 argument1, type2 argument2, ...];3
Gọi một chức năng
Kiểm soát chương trình được chuyển đến chức năng do người dùng xác định bằng cách gọi nó
Cú pháp gọi hàm
functionName[argument1, argument2, ...];
Trong ví dụ trên, lời gọi hàm được thực hiện bằng cách sử dụng câu lệnh
returnType functionName[type1 argument1, type2 argument2, ...];4 bên trong hàm
returnType functionName[type1 argument1, type2 argument2, ...];3
định nghĩa hàm
Định nghĩa hàm chứa khối mã để thực hiện một tác vụ cụ thể. Trong ví dụ của chúng tôi, thêm hai số và trả về
Cú pháp định nghĩa hàm
________số 8Khi một hàm được gọi, quyền điều khiển chương trình được chuyển sang phần định nghĩa hàm. Và, trình biên dịch bắt đầu thực thi các mã bên trong phần thân của hàm
Truyền đối số cho hàm
Trong lập trình, đối số đề cập đến biến được truyền cho hàm. Trong ví dụ trên, hai biến n1 và n2 được truyền trong khi gọi hàm
Các tham số a và b chấp nhận các đối số đã truyền trong định nghĩa hàm. Các đối số này được gọi là các tham số hình thức của hàm
Loại đối số được truyền cho một hàm và các tham số hình thức phải khớp nhau, nếu không, trình biên dịch sẽ đưa ra lỗi
Nếu n1 thuộc kiểu char thì a cũng thuộc kiểu char. Nếu n2 là kiểu float, biến b cũng phải là kiểu float
Một chức năng cũng có thể được gọi mà không cần truyền đối số
Tuyên bố trả lại
Câu lệnh return kết thúc việc thực thi một hàm và trả về một giá trị cho hàm gọi. Điều khiển chương trình được chuyển đến hàm gọi sau câu lệnh return
Trong ví dụ trên, giá trị của biến kết quả được trả về hàm chính. Biến tổng trong hàm
returnType functionName[type1 argument1, type2 argument2, ...];3 được gán giá trị này
Cú pháp của câu lệnh return
returnType functionName[type1 argument1, type2 argument2, ...];0
Ví dụ,
returnType functionName[type1 argument1, type2 argument2, ...];1
Loại giá trị được trả về từ hàm và loại trả về được chỉ định trong nguyên mẫu hàm và định nghĩa hàm phải khớp