Trong C/C++, không thể trực tiếp trả về nhiều giá trị từ một hàm. Ta có thể dùng "call by address" hoặc "call by reference". Hàm nhận con trỏ hoặc tham chiếu, hàm gọi truyền địa chỉ biến để lưu kết quả.
Ví dụ: hàm chia hai số trả về cả thương và dư.
Gọi bằng địa chỉ (Call By Address)
Ví dụ
#include <iostream>
using namespace std;
void div(int a, int b, int *quotient, int *remainder) {
*quotient = a / b;
*remainder = a % b;
}
int main() {
int a = 76, b = 10;
int q, r;
div(a, b, &q, &r);
cout << "Quotient is: " << q << "\nRemainder is: " << r << "\n";
return 0;
}
Kết quả
Quotient is: 7 Remainder is: 6
Gọi bằng tham chiếu (Call By Reference)
Ví dụ
#include <iostream>
using namespace std;
void div(int a, int b, int "ient, int &remainder) {
quotient = a / b;
remainder = a % b;
}
int main() {
int a = 76, b = 10;
int q, r;
div(a, b, q, r);
cout << "Quotient is: " << q << "\nRemainder is: " << r << "\n";
return 0;
}
Kết quả
Quotient is: 7 Remainder is: 6