Các hàm C là các khối xây dựng cơ bản trong một chương trình. Tất cả các chương trình C đều được viết bằng các hàm để cải thiện khả năng sử dụng lại, dễ hiểu và theo dõi chúng. Bạn có thể tìm hiểu chi tiết các khái niệm bên dưới về hàm C trong phần này
- Chức năng C là gì?
- Công dụng của hàm C
- Khai báo hàm C, gọi hàm và định nghĩa với chương trình ví dụ
- Làm thế nào để gọi các chức năng C trong một chương trình?
- Gọi theo giá trị
- Gọi theo tham chiếu
- Đối số hàm C và giá trị trả về
- Hàm C có đối số và có giá trị trả về
- Hàm C có đối số và không có giá trị trả về
- Hàm C không có đối số và không có giá trị trả về
- Hàm C không có đối số và có giá trị trả về
- Các loại hàm C
- Hàm thư viện trong C
- Các hàm do người dùng định nghĩa trong C
- Tạo/Thêm chức năng do người dùng xác định trong thư viện C
- Đối số dòng lệnh trong C
- Đối số độ dài thay đổi trong C
1. Chức năng C là gì?
Một chương trình C lớn được chia thành các khối xây dựng cơ bản được gọi là hàm C. Hàm C chứa tập hợp các hướng dẫn kèm theo “{ }” thực hiện thao tác cụ thể trong chương trình C. Trên thực tế, Bộ sưu tập các chức năng này tạo ra một chương trình C
Các chức năng được sử dụng để thực hiện một số hành động nhất định và chúng rất quan trọng để sử dụng lại mã. Xác định mã một lần và sử dụng nó nhiều lần
Chức năng được xác định trước
Vậy hóa ra bạn đã biết hàm là gì. Bạn đã sử dụng nó trong suốt thời gian nghiên cứu hướng dẫn này
Ví dụ: main[]
là một hàm, được sử dụng để thực thi mã và printf[]
là một hàm;
Tạo một chức năng
Để tạo [thường được gọi là khai báo] hàm của riêng bạn, hãy chỉ định tên của hàm, theo sau là dấu ngoặc đơn []
và dấu ngoặc nhọn {}
cú pháp
void myFunction[] {
// mã sẽ được thực thi
}
Ví dụ giải thích
myFunction[]
là tên của chức năngvoid
nghĩa là hàm không có giá trị trả về. Bạn sẽ tìm hiểu thêm về các giá trị trả về sau trong chương tiếp theo- Bên trong hàm [phần thân], thêm mã xác định chức năng sẽ làm gì
Gọi một chức năng
Các chức năng được khai báo không được thực thi ngay lập tức. Chúng được "lưu để sử dụng sau" và sẽ được thực thi khi chúng được gọi
Để gọi một hàm, hãy viết tên hàm theo sau là hai dấu ngoặc đơn []
và dấu chấm phẩy ;
Trong hướng dẫn này, chúng ta sẽ tìm hiểu về cách gọi một hàm trong ngôn ngữ lập trình c bằng cách gọi theo giá trị
Sau khi viết một hàm trong C, chúng ta phải gọi hàm này để thực hiện tác vụ được xác định bên trong thân hàm. Chúng ta không thể thực thi mã được xác định bên trong thân hàm trừ khi chúng ta gọi nó từ một hàm khác
Khi một chức năng [gọi chức năng] gọi một chức năng khác [gọi chức năng], điều khiển chương trình được chuyển đến chức năng được gọi. Hàm được gọi thực hiện tác vụ cụ thể được xác định trong thân hàm và khi hàm được gọi kết thúc bằng câu lệnh trả về hoặc khi đạt đến dấu ngoặc đóng kết thúc hàm, điều khiển chương trình sẽ quay trở lại hàm gọi
Cú pháp gọi một hàm
tên_hàm[đối số1, đối số2,. ];
Chúng ta có thể gọi một hàm C chỉ bằng cách truyền các tham số bắt buộc cùng với tên hàm. Nếu hàm trả về một giá trị, thì chúng ta có thể lưu trữ giá trị trả về trong một biến có cùng kiểu dữ liệu
Ví dụint sum = getSum[5, 7];
Câu lệnh trên sẽ gọi một hàm có tên getSum và chuyển 5 và 7 làm tham số. Nó cũng lưu giá trị trả về của hàm getSum trong biến sum
Có hai phương pháp khác nhau để gọi một hàm trong ngôn ngữ lập trình C. gọi theo giá trị và gọi theo tham chiếu. Trước đây, chúng tôi gửi một bản sao của biến thực tới hàm trong khi gọi nó. Do đó, mọi thay đổi về giá trị của biến này bên trong thân hàm sẽ không được phản ánh ra bên ngoài. Mặt khác, trong trường hợp sau, chúng ta gửi một tham chiếu của biến thực tế đến hàm trong khi gọi nó, đó là lý do tại sao bất kỳ thay đổi nào về giá trị của biến này bên trong phần thân của hàm cũng được phản ánh ra bên ngoài. Bạn sẽ có thể hiểu rõ khái niệm này bằng cách xem qua hai ví dụ sau
Ví dụ 1. Cuộc gọi theo phương thức giá trị
Như tiêu đề đã nói, trong ví dụ này, chúng ta sẽ gọi một hàm theo giá trị. Để làm được điều đó, chúng tôi đã tạo tập lệnh C được hiển thị trong hình bên dưới
Trong tập lệnh này, chúng tôi đã xác định hai số nguyên khác nhau và sau đó in các giá trị ban đầu của chúng trên thiết bị đầu cuối để chúng tôi có thể dễ dàng so sánh chúng với các giá trị mới của chúng sau này. Sau đó, chúng ta đã gọi hàm “newValues[]”. Bên trong hàm này, giá trị của biến đầu tiên được tăng thêm “2” và giá trị của biến thứ hai được tăng thêm “4”. Sau đó, chúng tôi đã in các giá trị mới của các biến này trên thiết bị đầu cuối. Sau đó, một lần nữa trong hàm “main[]”, chúng ta đã in giá trị của các biến này trên thiết bị đầu cuối để xem sự thay đổi về giá trị của chúng có được phản ánh ra bên ngoài hàm “newValues[]” hay không
Để biên dịch tập lệnh ví dụ này, chúng tôi đã sử dụng lệnh sau
$ gcc . c –o hàm
Để chạy tập lệnh này, chúng tôi đã sử dụng lệnh hiển thị bên dưới
$ . /chức năng
Vì chúng tôi đã gọi hàm của mình theo giá trị trong ví dụ này, do đó, các giá trị thay đổi của các biến của chúng tôi chỉ được hiển thị trong quá trình thực thi hàm chứ không phải trước và sau khi gọi hàm. Điều này có thể được nhìn thấy trong đầu ra sau
Ví dụ #2. Cuộc gọi theo phương thức tham chiếu
Bây giờ, chúng tôi sẽ sử dụng cùng một tập lệnh mà chúng tôi đã thiết kế trong ví dụ đầu tiên của mình. Tuy nhiên, lần này, chúng ta sẽ gọi hàm của mình bằng tham chiếu. Để làm được điều đó, bạn có thể xem tập lệnh đã sửa đổi được hiển thị trong hình ảnh bên dưới
Trong tập lệnh này, thay vì chuyển một bản sao của các biến tới hàm “newValues[]”, chúng tôi đã chuyển các tham chiếu của chúng tới đó. Thay đổi nhỏ này sẽ được mô tả trong đầu ra của tập lệnh đã sửa đổi của chúng tôi
Bạn có thể xác minh từ đầu ra được hiển thị trong hình ảnh sau đây rằng lần này, các giá trị đã thay đổi cũng được mô tả bên ngoài hàm “newValues[]” khi nó được gọi. Đó là bởi vì, thay đổi được thực hiện trong các biến thực chứ không phải trong các bản sao của chúng
Phần kết luận
Bài viết này được viết để cung cấp cho bạn ý tưởng về các cách khác nhau mà bạn có thể gọi một hàm trong ngôn ngữ lập trình C. Có hai cách chủ yếu để làm như vậy. gọi theo giá trị và gọi theo tham chiếu. Bằng cách đọc bài viết này, bạn sẽ có thể tìm hiểu cả hai phương pháp này cùng với tầm quan trọng của chúng trong ngôn ngữ lập trình C