Pages

Hàm - Functions

0

Nếu như trong Pascal, người ta phân biệt hàm (Function – có giá trị trả về) và thủ tục (Procedure – không có giá trị trả về) thì trong C, 2 khái niệm này được gộp chung dưới 1 khái niệm là hàm. Bài viết dưới đây sẽ giới thiệu một cách tổng quan về hàm trong ngôn ngữ C.

Khai báo hàm:

KDL_Trả_Về Tên_Hàm(Danh_Sách_Tham_Số)
{
    //Thân hàm
    return <biến (hay giá trị) có kiểu là kdl_trả_về>;
}

Kiểu dữ liệu trả về có thể là 1 kiểu dữ liệu cơ bản nào đó (int, float, void …) hoặc 1 kiểu dữ liệu do người dùng tự định nghĩa. Nếu kiễu dữ liệu trả về là void thì hàm này sẽ tương đương với khái niệm thủ tục (procedure) trong Pascal và câu lệnh return trong hàm sẽ được bỏ.

Danh sách tham số có dạng: Kiểu_DL_1 Tham_Số_1, Kiễu_DL_2 Tham_Số_2,...

Ví dụ: Hàm tính tổng 2 số nguyên

    int  Tong(int a, int b)
    {
        return a + b;
    }
    

Lời gọi hàm: Tên_Hàm(Danh_Sách_Đối_Số)

Ví dụ: Với hàm tính tổng ở trên, ta có thể gọi như sau:

    int a = 3, b = 4;
    int tong = Tong(a, b);
    

Trong C, ta có thể tách biệt phần khai báo hàm thành 2 thành phần là khai báo nguyên mẫu và định nghĩa hàm (việc này được khuyến khích).

Ví dụ : Hàm tính tổng ở trên có thể được tách ra như sau:

Khai báo nguyên mẫu:

    int Tong(int,int);
    

Định nghĩa hàm (giống khai báo trên thôi):

    int Tong(int a, int b)
    {
            return a + b;
    }
    

1 hàm có thể được gọi nếu như nó đã được khai báo nguyên mẫu (có thể chưa được định nghĩa trước đó và tất nhiên ta phải định nghĩa nó ở đâu đó phía sau).

C chỉ xem 2 hàm là giống nhau khi chúng cùng tên, cùng giá trị trả về, cùng số tham số cũng như cùng kiểu tham số (khác 1 cái là khác rồi).

Các tham số trong C được truyền giá trị (C lấy giá trị của các đối số và truyền giá trị này cho các tham số hình thức). Do đó những thay đổi về giá trị của các tham số trong thân hàm sẽ không ảnh hưởng tới giá trị của đối số gốc. Để giải quyết hạn chế này của C thì người sẽ sử dụng các tham số là con trỏ.

Ví dụ : Hàm hoán vị 2 số nguyên sử dụng của con trỏ/p>

    void HoanVi(int *a, int *b)
    {
        int t = *a;
        *a = *b;
        *b = t;
    }
    
Khi đó ta thể sử dụng hàm hoán vị trên như sau:
    int a = 3, b = 4;
    HoanVi(&a,&b);
    

No comments:

Post a Comment

Có thể post link nhaccuatui, youtube, link hình và link mp3

[size="cở chữ"]Chữ[/size], [color="màu chữ"]Chữ[/color]

Chèn Emoticons
:) :)
:( :(
:( :((
:)) :))
=(( =((
=)) =))
;) ;)
:D :D
:X :X
X( X(
~X( ~X(
:-*
[-(
8-x 8-x
I-)

Recent Posts

    Recent Comments

    Back to top