Lập Trình C: Lời Gọi Hàm (Call Function) | V1Study

Học viện Đào tạo và Công nghệ V1Study
  • Đào tạo Độ tuổi từ 5 - 11 Độ tuổi từ 12 - 17 Từ 18 tuổi
  • Lập trình Python Lập trình C C++ Java C# - C Sharp Android Scratch Pascal Robot mBot
  • Web ReactJS HTML5 CSS3 JavaScript Node.js JSP ASP.NET Core jQuery PHP
  • FW-CMS Laravel AngularJS Flutter Magento Bootstrap VueJS CodeIgnitor WordPress Sass Drupal
  • Video Video Python Video Lập trình C Video C# Video Java Video HTML5-CSS3-JavaScript Video SQL Server Video PHP Video jQuery Video Android Video C++ Video Scratch
  • Video1 Video XML-JSON Video MySQL Video Excel Video Giải thuật và Lập trình Video Sức khỏe Video Drupal Video mBot Video Giáo dục - Khoa học
  • Other Unity Giải thuật và lập trình Giải thuật và lập trình - C CCNA Mạng máy tính Design Patterns English Facebook SEO Git Tin học đại cương Japanese App-Uti Download
  • Data SQL Server XML JSON MySQL
  • News
Học viện Đào tạo và Công nghệ V1Study ≡ Lập trình C Bài học Danh sách bài học Bài 1. Giới thiệu Bài 2. Đặc điểm Bài 3. Hướng dẫn viết mã lệnh Bài 4. Hướng dẫn lập tư liệu nội bộ Bài 5. Quy tắc đặt tên Bài 6. Từ khoá (Keyword) Bài 7. Kiểu dữ liệu (Data type) Bài 8. Hằng (Constant) Bài 9. Biến (Variable) Bài 10. Định dạng, ký tự đặc biệt và bổ từ Bài 11. Lớp lưu trữ Bài 12. Phép toán số học Bài 13. Phép Gán (Assignment) Bài 14. Phép toán So sánh Bài 15. Phép toán Logic (Logical) Bài 16. Phép toán Logic nhị phân Bài 17. Độ ưu tiên phép toán Bài 18. printf() & scantf() Bài 19. Ép kiểu (Cast) Bài 20. if-else và ?: Bài 21. switch-case Bài 22. Vòng lặp for Bài 23. Vòng lặp while Bài 24. Vòng lặp do-while Bài 25. break; và continue; Bài 26. Hàm (Function) Bài 27. Lời gọi hàm (Call Function) Bài 28. Biến tổng thể và biến cục bộ Bài 29. Đệ quy (Recursion) Bài 30. Mảng (Array) một chiều Bài 31. Mảng hai chiều Bài 32. Chuỗi (String) Bài 33. Mảng chuỗi Bài 34. Hàm xử lý chuỗi (String) Bài 35. Con trỏ (Pointer) Bài 36. Cấp phát bộ nhớ Bài 37. Cấu trúc (Struct) Bài 38. Cơ bản về tập tin Bài 39. Quản lý tập tin văn bản Bài 40. Quản lý tập tin nhị phân Bài 41. Các hàm xử lý tập tin Ví dụ Giải phương trình bậc 1 Giải phương trình bậc 2 Nguyên hay thực Nguyên âm hay Phụ âm Số ngày trong tháng Tam giác vuông trái xuôi Cách nhập liệu cho mảng Cách xóa phần tử khỏi mảng Cách sắp xếp mảng Tìm Max, Min bằng phương pháp sắp xếp Tìm số nguyến tố trong mảng số thực Kiểm tra một số có phải số nguyên hay không Kiểm tra một số có phải số chính phương không Kiểm tra một số có phải số nguyên tố không Đếm số từ trong chuỗi Xóa phần tử mảng Tính điểm tổng kết môn học Lập trình C Tuổi cha và tuổi con Bài tập Bài tập cơ bản Bài tập phần điều kiện Bài tập phần vòng lặp (Loop) Bài tập phần mảng (Array) Bài tập phần hàm (function) Bài tập phần cấu trúc (struct) Bài tập phần tập tin (File) Quiz Tham khảo Hàm toán học (Math) Bảng mã ASCII Hệ thống nhớ máy tính Danh sách kiểu dữ liệu Phím tắt BorlandC Cách lấy kích thước mảng Chuyển từ kiểu int sang chuỗi Hàm hoán vị 2 số không cần dùng con trỏ Tìm kiếm nhị phân (Binary Search) Hướng dẫn sử dụng CodeBlocks bản nosetup 7 lý do bạn nên nắm được kiến thức C/C++ Sự khác biệt giữa mã định dạng %d và %i QuickSort Bài toán mã đi tuần Hàm xử lý ký tự (Character) Tích hợp C/C++ vào VS Code Videos Chỉnh sửa cơ bản Khung chương trình C Xác định nguyên hay thực Hoán vị hai số Xác định tính nguyên tố (prime) Demo giải phương trình bậc 1 Demo giải phương trình bậc 2 Phương trình bậc 2 - Tạo hàm Cách nhập liệu cho mảng một chiều Cách xóa phần tử khỏi mảng Cách sắp xếp mảng Tìm Max, Min bằng phương pháp sắp xếp Cách khai báo biến Xác định tính chính phương Kiểm tra số nguyên Kiểm tra tính chính phương Cách sắp xếp mảng 2 chiều Solutions Solution bài tập cơ bản Solution Bài tập phần điều kiện Solution bài tập phần vòng lặp Solution bài tập phần mảng số Tính tổng dãy số nguyên (không phải mảng) Đáp án tham khảo Bộ đề Đề 1 Đề 2 Đề 3 Đề 4 Đề 5 Đề 6 Đề 7 Đề 8 Đề 9 Đề 10 Đề 11 Đề 12 Đề 13 Đề 14 Đề 15 Đề 16 Đề 17 Đề 18 Đề 19 Đề 20 Đề 24 Taught Cơ sở lập trình - Buổi 1 Chữa bài tập 1 phần hàm Kiến thức phần hàm (function) Kiến thức phần mảng Mảng ký tự - Chuỗi Struct Lập trình C: Lời gọi hàm (Call Function) Khóa học qua video: Lập trình Python All Lập trình C# All SQL Server All Lập trình C Java PHP HTML5-CSS3-JavaScript Đăng ký Hội viên Tất cả các video dành cho hội viên

Các hàm thường giao tiếp hay gọi đến nhau bằng lời gọi hàm (call function). Việc giao tiếp hay gọi đến nhau của các hàm thông qua cách truyền tham số.

Các tham số được truyền theo một trong hai cách sau đây:

Truyền bằng tham trị (hay giá trị)

Ý nghĩa: Đây là lời gọi hàm mà trong đó đối số thực sự không thay đổi giá trị sau khi hàm được gọi thực hiện xong công việc. Truyền bằng tham trị là lời gọi mặc định của các chương trình C.

Truyền bằng tham chiếu (hay tham biến)

* Bản chất của truyền bằng tham chiếu là truyền địa chỉ của biến.

* Ý nghĩa: cách gọi hàm bằng truyền tham chiếu có thể làm thay đổi giá trị của đối số thực sự. Việc truyền tham chiếu được thực hiện thông qua biện pháp con trỏ.

Cú pháp:

Kiểu_dữ_liệu Tên_hàm(Kiểu _dữ_liệu *Tên_con_trỏ_1, Kiểu_dữ_liệu *Tên_con_trỏ_2,…) { Khối_lệnh; } void main() { Kiểu_dữ_liệu Biến_1; Kiểu_dữ_liệu Biến_2; Tên_hàm(&Biến_1,&Biến_2,…); }

Ví dụ:

Ví dụ 1: Viết một hàm có nhiệm vụ hoán đổi giá trị của hai số x và y cho nhau với x và y nhập vào từ bàn phím.

+ Nếu không dùng phương pháp tham chiếu thì chương trình sẽ không thực hiện được mục đích, tức là hai số x và y vẫn giữ nguyên giá trị sau lời gọi hàm. Chương trình được viết như sau:

#include<stdio.h> void hoanVi(float x, float y) { int z; z=x; //Cách khác: x=x+y; x=y; //y=x-y; //y= (x+y)-y = x y=z; //x=x-y; //x= (x+y)-x = y } int main() { float x, y; printf("Nhap 2 so x, y: "); scanf("%f %f",&x,&y); hoanVi(x, y); printf("\nSau khi tien hanh doi, ta duoc: x=%f va y=%f", x, y); return 0; }

+ Nếu dùng phương pháp tham chiếu thì chương trình sẽ thực hiện được mục đích, x và y sẽ hoán đổi giá trị cho nhau. Chương trình được viết như sau:

#include<stdio.h> void DoiGT(float *x, float *y) { int z; z=*x; //Cách khác: *x=*x+*y; *x=*y; //*y=*x-*y; //*y= (*x+*y)-*y = *x *y=z; //*x=*x-*y; //*x= (*x+*y)-*x = *y } int main() { float x, y; printf("\nNhap 2 so x, y: "); scanf("%f %f", &x, &y); DoiGT(&x,&y); printf("\nSau khi tien hanh hoan vi, ta duoc: x=%g va y=%g", x, y); return 0; }

Kết quả:

Lời gọi hàm - Hoán vị

Ví dụ 2: Viết chương trình nhập vào 3 giá trị kiểu thực (float hoặc double), sau đó tìm giá trị lớn nhất trong 3 giá trị đó. Yêu cầu:

· Phải viết chương trình dưới dạng các hàm.

· Không được sử dụng các biến tổng thể (biến toàn cục).

+ Theo yêu cầu trên thì ta phải có 3 biến để lưu 3 giá trị muốn so sánh và các biến này phải là các biến địa phương khai báo trong các hàm. Vì hàm main() là hàm chính của chương trình nên ta sẽ khai báo các biến trong hàm main(), và vì chương trình được viết dưới dạng các hàm nên ta khai báo thêm các con trỏ ứng với các biến đó.

+ Chương trình được viết như sau:

#include<stdio.h> void nhap(float *a, float *b, float *c) { //hàm nhập các số a, b và c printf("\nNhap a: "); scanf("%f", a); printf("\nNhap b: "); scanf("%f", b); printf("\nNhap c: "); scanf("%f", c); } float sosanh(float a, float b, float c) { //hàm tìm giá trị lớn nhất float max; //biến lưu lại giá trị lớn nhất max = a; //giả sử a là số lớn nhất if(max < b) //nếu b lớn hơn max max = b; //thì gán b cho max if(max < c) //nếu c lớn hơn max max = c; //thì gán c cho max return max; //trả lại giá trị lớn nhất lưu trong biến max } int main() { float a, b, c; //khai báo 3 biến a, b, c float max; //khai báo biến lưu trữ giá trị lớn nhất nhap(&a,&b,&c); //Gọi hàm nhap() truyền đối số ở dạng tham chiếu max=sosanh(a,b,c); //Gọi và gán giá trị trả về của hàm sosanh() cho biến max printf("\nSo lon nhat trong 3 so nhap vao la: %g", max); return 0; }

Kết quả:

Lời gọi hàm - số lớn nhất trong ba số

Chú ý: Mọi hàm nhập giá trị cho các biến địa phương (cục bộ) đều được truyền theo phương pháp tham chiếu theo mẫu chương trình như trên.

» Tiếp: Biến tổng thể và biến cục bộ « Trước: Hàm (Function) Khóa học qua video: Lập trình Python All Lập trình C# All SQL Server All Lập trình C Java PHP HTML5-CSS3-JavaScript Đăng ký Hội viên Tất cả các video dành cho hội viên Khóa học qua video: Lập trình Python All Lập trình C# All SQL Server All Lập trình C Java PHP HTML5-CSS3-JavaScript Đăng ký Hội viên Tất cả các video dành cho hội viên Copied !!! Copy linkCopied link!
Bạn muốn tìm kiếm điều gì?

Từ khóa » Cách Viết Hàm Main Trong C++