Gọi Hàm
Nếu một tên chưa được mô tả trước đó xuất hiện trong biểu thức và được theo sau bởi dấu ngoặc trái, nó được coi là tên của một hàm theo ngữ cảnh.
function_name (x1, x2,..., xn)
Các đối số (formal parameters) được truyền theo giá trị, tức là mỗi biểu thức x1,..., xn được tính toán, và giá trị được truyền vào hàm. Thứ tự tính toán các biểu thức và thứ tự nạp giá trị không được đảm bảo. Trong quá trình thực thi, hệ thống kiểm tra số lượng và kiểu của các đối số được truyền vào hàm. Cách gọi hàm này được gọi là gọi theo giá trị.
Gọi hàm là một biểu thức, giá trị của nó là giá trị được hàm trả về. Kiểu hàm được mô tả ở trên phải tương ứng với kiểu của giá trị trả về. Hàm có thể được khai báo hoặc mô tả ở bất kỳ phần nào của chương trình trong global scope, tức là bên ngoài các hàm khác. Hàm không thể được khai báo hoặc mô tả bên trong một hàm khác.
Ví dụ:
int start()
{
double some_array[4]={0.3, 1.4, 2.5, 3.6};
double a=linfunc(some_array, 10.5, 8);
//...
}
double linfunc(double x[], double a, double b)
{
return (a*x[0] + b);
}
2
3
4
5
6
7
8
9
10
Khi gọi một hàm có tham số mặc định, danh sách các tham số được truyền có thể bị giới hạn, nhưng không được trước tham số mặc định đầu tiên.
Ví dụ:
void somefunc(double init,
double sec=0.0001, // đặt giá trị mặc định
int level=10);
//...
somefunc(); // Gọi sai. Tham số đầu tiên phải được cung cấp.
somefunc(3.14); // Gọi đúng
somefunc(3.14,0.0002); // Gọi đúng
somefunc(3.14,0.0002,10); // Gọi đúng
2
3
4
5
6
7
8
Khi gọi hàm, không được bỏ qua các tham số, ngay cả những tham số có giá trị mặc định:
somefunc(3.14, , 10); // Gọi sai -> tham số thứ hai bị bỏ qua.
Xem thêm