4. Ví dụ: hàm tính x n double Power(double x, int n) { double result; for(result = 1; n; n--) result *= x; return result; } nhận vào 2 tham số khi được gọi kiểu của giá trị trả về giá trị được trả về qua lệnh return
5. Ví dụ: gọi thực hiện hàm Power #include <stdio.h> double Power(double, int); int main() { double m = Power(2, 3); printf(“3.5 ^ 4 = %lf”, Power(3.5, 4)); return 0; } Chỉ thị cho chương trình biết prototype của hàm Power 3.5 và 4: 2 tham số thực sự
6. Một số lỗi thường gặp #include <stdio.h> int main() { int m = Power(2, 3); printf(“3.5 ^ 4 = %lf”, Power(4)); return 1.0; } Compiler không hiểu được hàm Power giá trị trả về không khớp kiểu hàm Power thiếu tham số
7.
8. Hàm: dạng tổng quát kiểu trả về tên hàm( danh sách tham số hình thức ) { //khai báo các biến của hàm //các lệnh thực thi return giá trị trả về ; //hàm void không có giá trị trả về } header của hàm thân (body) hàm
9.
10.
11.
12. Truyền giá trị - ví dụ #include <stdio.h> void change(int v); int main() { int var = 5; change(var); printf("main: var = %i", var); return 0; } void change(int v) { v *= 100; printf("change: v = %i", v); } change: v = 500 main: var = 5 hàm change không thay đổi giá trị của “var”
13.
14. Truyền địa chỉ - ví dụ #include <stdio.h> void change(int *v); int main() { int var = 5; change(&var); printf("main: var = %i", var); return 0; } void change(int *v) { (*v) *= 100; printf("change: *v = %i", (*v)); } change: *v = 500 main: var = 500 v: tham số địa chỉ của số int, khai báo với dấu * truyền địa chỉ của “var” vào hàm change
15.
16. Truyền tham chiếu - ví dụ #include <stdio.h> void change(int &v); int main() { int var = 5; change(var); printf("main: var = %i", var); return 0; } void change(int &v) { v *= 100; printf("change: v = %i", v); } change: v = 500 main: var = 500 v: tham số tham chiếu, khai báo với dấu & truyền “var” vào hàm change
17. Truyền tham số - ví dụ #include <stdio.h> void function(int a, int *b, int &c); int main() { int x = 3, y = 4, z = 5; function(x, &y, z); printf("%i %i %i", x, y, z); return 0; } void function(int a, int *b, int &c) { a *= 2; (*b) += a; c = a + (*b); printf("%i %i %i", a, *b, c); } 6 10 16 3 10 16 main function a b c
18.
19. Phương thức trao đổi dữ liệu #include <stdio.h> double power(int, int); int main(void) { int x = 2; double d; d = power(x, 5); printf("%lf", d); return 0; } double power(int n, int p) { double result = n; while(--p > 0) result *= n; return result; } main: x 2 main: d ? power: p 5 power: n 2 power: result 32.0 32.0