Hàm và truyền tham số
Parameter mặc định được copy; caller phải cấp quyền rõ ràng nếu hàm cần thay đổi object.
Hàm và truyền tham số là gì?
Parameter mặc định được copy; caller phải cấp quyền rõ ràng nếu hàm cần thay đổi object.
So sánh pass-by-value, pointer và reference.
Điểm quan trọng
- Luôn bật compiler warning và xử lý mọi cảnh báo.
- Hiểu rõ type và lifetime của từng giá trị.
- Kiểm tra input và giới hạn mảng rõ ràng.
Code ví dụ bằng C và C++
main.c
#include <stdio.h>
void swap_ints(int *left, int *right) {
int temporary = *left;
*left = *right;
*right = temporary;
}
int main(void) {
int a = 4, b = 9;
swap_ints(&a, &b);
printf("%d %d\n", a, b);
return 0;
}
9 4
C++
main.cpp
#include <iostream>
void swap_ints(int& left, int& right) {
int temporary = left;
left = right;
right = temporary;
}
int main() {
int a = 4, b = 9;
swap_ints(a, b);
std::cout << a << ' ' << b << '\n';
}
9 4
So sánh C và C++
C truyền địa chỉ rồi dereference; C++ reference cung cấp cú pháp alias. const diễn đạt quyền chỉ đọc.
C
C dùng API thủ tục nhỏ gọn và thể hiện chi tiết biểu diễn rõ ràng.
C++
C++ giữ mô hình low-level nhưng bổ sung type thư viện và abstraction an toàn hơn.
Bài tập mở rộng
Chạy cả hai phiên bản rồi thay đổi để quan sát khác biệt về bảo đảm của từng ngôn ngữ.
- Thêm input sai và boundary value.
- Biên dịch với -Wall -Wextra -Wpedantic.
- Tách declaration dùng lại vào header và implementation file.