📅  最后修改于: 2023-12-03 14:57:56.199000             🧑  作者: Mango
在C++中,有时我们希望从一个函数返回多个值。一种常见的做法是使用元组(tuple)来封装这些值,并将其作为函数的返回值。然而,某些情况下,函数可能没有有效的返回值,这时我们可以选择返回 null
。
返回元组是一种将多个值打包在一起返回的方式。C++17 引入了 std::tuple
类模板,可以方便地创建和操作元组。以下是一个返回元组的示例代码:
#include <tuple>
#include <iostream>
std::tuple<int, double, std::string> getValues() {
int intValue = 42;
double doubleValue = 3.14;
std::string stringValue = "Hello, world!";
return std::make_tuple(intValue, doubleValue, stringValue);
}
int main() {
auto values = getValues();
int intValue = std::get<0>(values);
double doubleValue = std::get<1>(values);
std::string stringValue = std::get<2>(values);
std::cout << "Int value: " << intValue << std::endl;
std::cout << "Double value: " << doubleValue << std::endl;
std::cout << "String value: " << stringValue << std::endl;
return 0;
}
上述代码中,getValues()
函数返回一个包含一个整数、一个双精度浮点数和一个字符串的元组。在 main()
函数中,我们使用 std::get<index>(tuple)
函数来获取元组中特定位置的值。
null
有些情况下,函数可能没有有效的返回值,这时我们可以选择返回 null
。在 C++ 中,我们通常使用空指针 nullptr
表示 null
。以下是一个返回 null
的示例代码:
#include <iostream>
int* findValue(int array[], int size, int value) {
for (int i = 0; i < size; i++) {
if (array[i] == value) {
return &array[i]; // 返回匹配值的指针
}
}
return nullptr; // 没有找到匹配值,返回 null
}
int main() {
int array[] = {1, 2, 3, 4, 5};
int value = 3;
int* result = findValue(array, sizeof(array) / sizeof(array[0]), value);
if (result != nullptr) {
std::cout << "Value found at address: " << result << std::endl;
std::cout << "Value: " << *result << std::endl;
} else {
std::cout << "Value not found!" << std::endl;
}
return 0;
}
上述代码中,findValue()
函数在给定的数组中查找特定的值。如果找到了匹配的值,则返回该值在数组中的地址;否则,返回空指针 nullptr
。在 main()
函数中,我们检查返回值是否为 nullptr
,并相应地输出结果。
以上就是使用元组或 null
作为返回值的C++代码示例。使用元组可以方便地返回多个值,而返回 null
则用于表示没有有效的返回值。