Khai báo hàm
Muốn khai báo hàm, có thể áp dụng theo cấu trúc sau:
data_type function_name (argument 1, argument 2, …) { statements; }
data_type
Là kiểu dữ liệu được trả về của hàm cần khai báo.
- Nếu hàm không có giá trị trả về,
data_type
sẽ làvoid
. - Ngược lại nếu có giá trị trả về,
data_type
cũng chính là kiểu của giá trị trả về ấy. Trong trường hợp này trong thân hàm cần phải dùng từ khoáreturn
để trả về giá trị mong muốn.
Ví dụ hàm trả về là 1 giá trị kiểu int
thì hàm đó có dạng sau:
int function_name (argument 1, argument 2,…) { statements; return [biểu thức có giá trị là kiểu int]; }
function_name
Là tên hàm muốn đặt. Tên này có thể là 1 tên bất kỳ nhưng cần phải tuân theo 1 số quy tắc sau:
- Tên hàm là 1 dãy các ký tự chỉ gồm những đối tượng sau: chữ, số, dấu gạch dưới "_". Không được chứa bất kỳ ký tự nào khác, kể cả khoảng trắng và dấu "-".
- Ký tự đầu tiên của tên phải là chữ hoặc dấu gạch dưới "_", không thể là số.
- Không được đặt tên trùng với các từ khoá.
- Trong tên, chữ thường và chữ hoa là khác nhau.
- Độ dài tối đa của tên được mặc định là 32 ký tự.
argument 1, argument 2, …
Là các tham số được sử dụng trong hàm. 1 tham số bao gồm hai thành phần: kiểu dữ liệu và tên tham số. Số lượng tham số là không giới hạn và có thể có tham số hoặc không. Khi không có tham số có thể để trống hoặc dùng void
để khai báo tham số. Ví dụ:
int add(int x, int y) { int add; add = x + y ; return add; }
Khai báo nguyên mẫu (prototype)
Cách khai báo này được áp dụng khi muốn sử dụng hàm trước khi định nghĩa nó. Đồng thời, nếu trong chương trình có quá nhiều hàm sẽ gây trở ngại trong quá trình gọi chúng, thì việc khai báo này có thể giúp giải quyết điều ấy 1 cách dễ dàng và nhanh chóng.
Có thể sử dụng khai báo nguyên mẫu bằng cách áp dụng công thức sau:
data_type function_name (argument 1, argument 2, …);
Đây chính là dòng đầu tiên trong cách khai báo hàm ở trên, tuy nhiên có 2 điểm khác biệt là:
- Ở cuối dòng có thêm dấu chấm phẩy "
;
". - Tham số có thể chỉ cần kiểu dữ liệu mà không cần tên tham số.
Ví dụ:
int foo(int , int);