Cách sử dụng hàm

Một phần của tài liệu Ngôn ngữ C 2 (Trang 34 - 35)

II. CON TRỎ VÀ MẢNG

2. Cách sử dụng hàm

- Hàm được sử dụng thông qua lời gọi tới nó. Cách viết một lời gọi hàm như sau:

ten_ham([danh sách các tham số thực]);

- Ở đây ta cần lưu ý:

+ Số tham số thực phải bằng số đối.

+ Kiểu của tham số thực phải phù hợp với kiểu của đối tương ứng.

- Khi gặp một lời gọi hàm thì hàm bắt đầu được thực hiện. Nói cách khác, khi máy gặp một lời gọi hàm ở một chỗ nào đó của chương trình, thì máy sẽ tạm rời chỗ đó và chuyển đến hàm tương ứng. Quá trình sẽ diễn ra theo trình tự 4 bước như sau:

+ Cấp phát bộ nhớ cho các đối và các biến cục bộ.

+ Gán giá trị của các tham số thực cho các đối tương ứng. + Thực hiện các câu lệnh trong thân hàm.

+ Khi gặp câu lệnh return hoặc } cuối cùng của thân hàm thì máy sẽ xoá các đối, các biến cục bộ và thoát khỏi hàm để trở về chương trình gọi nó.

- Nếu hàm trở về từ một câu lệnh return có chứa biểu thức thì giá trị của biểu thức được gán cho hàm. Giá trị này sẽ được sử dụng trong biểu thức của hàm gọi nó.

- Ví dụ:

#include<stdio.h> #include<conio.h> long luythua(int a, int b); void hienthi(long kq); void main( ) { int x,n; long lt; clrscr( );

printf("Chuong trinh tinh luy thua cua x^n"); printf("\nNhap vao x=");

scanf("%d",&x);

printf("\nNhap vao n="); scanf("%d",&n);

lt=luythua(x,n); // goi ham luythua voi x, n la tham so thuc hienthi(lt); // goi ham hienthi voi lt la tham so thuc getch( );

}

long luythua(int a, int b) // a, b la tham so hinh thuc { int i; long kq=1; for(i=1;i<=b;i++) kq *=a; return kq; } void hienthi(long kq)

{

printf("Ket qua la: %ld",kq); return;

}

II.CÁCH TRUYỀN THAM SỐ1. Truyền theo giá trị 1. Truyền theo giá trị

- Nếu đối của hàm được truyền theo giá trị thì không làm ảnh hưởng gì đến những giá trị của tham số thực được truyền vào từ chương trình chính. Khi tham số thực truyền vào cho các đối tương ứng thì các đối này sẽ được cấp phát bộ nhớ riêng và chúng sẽ bị xoá trước khi hàm kết thúc. Như vậy, các đối chính là bản sao của các tham số thực. Hàm chỉ làm việc trên các đối, tức là chỉ làm việc trên các bản sao này. Các đối có thể bị biến đổi trong thân hàm, nhưng các tham số thực không hề bị thay đổi.

- Ví dụ:

/* Chuong trinh hoan doi hai so a va b */ #include<stdio.h>

#include<conio.h> void swap(int x, int y); void main() { int a,b; printf("Nhap a: "); scanf("%d",&a); printf("Nhap b: "); scanf("%d",&b); swap(a,b);

printf("Gia tri a: %d",a); printf("\nGia tri b: %d",b); getch();

}

void swap(int x, int y) { int temp; temp = x; x = y; y = temp; return; }

Một phần của tài liệu Ngôn ngữ C 2 (Trang 34 - 35)