TAILIEUCHUNG - Bài giảng Kỹ thuật lập trình: Hàm nâng cao (Phần 2) - ThS. Đặng Bình Phương
Chương này tiếp tục cung cấp các kiên thức về hàm nâng cao. Các nội dung cụ thể được trình bày trong chương này gồm: Tham số, khuôn mẫu hàm, nạp chồng hàm, nạp chồng hàm. để nắm bắt các nội dung chi tiết. | KỸ THUẬT LẬP TRÌNH HÀM NÂNG CAO (PHẦN 2) Nội dung Hàm nâng cao (phần 2) Tham số 1 Khuôn mẫu hàm 2 Nạp chồng hàm 3 Nạp chồng toán tử 4 Tham số Khai báo Ý nghĩa Hàm có số lượng tham số không biết trước và thường cùng kiểu (không được là char, unsigned char, float). Phải có ít nhất 1 tham số biết trước. Tham số đặt ở cuối cùng. Hàm nâng cao (phần 2) (, ) { } Tham số Ví dụ Hàm nâng cao (phần 2) void XuatTong1(char *msg, int n, ) { // Các lệnh ở đây } void XuatTong2(char *msg, ) { // Các lệnh ở đây } int Tong(int a, ) { // Các lệnh ở đây } Truy xuất danh sách tham số Sử dụng kiểu và các macro sau () va_list : kiểu dữ liệu chứa các tham số có trong va_start(va_list ap, lastfix) : macro thiết lập ap chỉ đến tham số đầu tiên trong với lastfix là tên tham số cố định cuối cùng. type va_arg(va_list ap, type) : macro trả về tham số có kiểu type tiếp theo. va_end(va_list ap) : macro giúp cho hàm trả về giá trị một cách “bình thường”. Hàm nâng cao (phần 2) Tham số Ví dụ Hàm nâng cao (phần 2) #include void XuatTong1(char *msg, int n, ) { va_list ap; va_start(ap, n); // ts cố định cuối cùng int value, s = 0; for (int i=0; i Tham số Ví dụ Hàm nâng cao (phần 2) #include void XuatTong2(char *msg, ) { va_list ap; va_start(ap, msg); // ts cố định cuối int value, s = 0; while ((value = va_arg(ap, int)) != 0) { s = s + value; } va_end(ap); printf(“%s %d”, msg, s); } Tham số Ví dụ Hàm nâng cao (phần 2) #include int Tong(int a, ) { va_list ap; va_start(ap, n); // ts cố định cuối cùng int value, s = a; while ((value = va_arg(ap, int)) != 0) { s = s + value; } va_end(ap); return s; } Khuôn mẫu hàm Viết hàm tìm số nhỏ nhất trong 2 số Viết các hàm khác nhau để tìm min 2 số int, 2 số long, 2 số float, 2 số double, 2 phân số Nhược điểm Hàm bản chất giống nhau nhưng
đang nạp các trang xem trước