gpt4 book ai didi

c++ - 从 C 或 C++ 中的函数返回多个数据项

转载 作者:可可西里 更新时间:2023-11-01 17:35:45 25 4
gpt4 key购买 nike

我对一些作业问题感到困惑...可以使用 return() 从一个函数返回多个数据项吗?一个函数只能返回一个值,除非它是一个指向数组的指针?

我相信答案是一个函数可以通过返回一个结构来返回多个数据项。那么,返回指向数组的指针并不是唯一的方法 - 如果这是一种方法?

但是似乎有很多关于这个话题的讨论,所以我想确保我至少有一个正确的基本想法:你可以使用结构返回多个数据项,但使用指针(我不明白这个) 将更有效地使用内存。这是正确的吗?

最佳答案

对于 C++0x/C++11,你可以使用这个:

#include <string>
#include <iostream>
#include <tuple>

using namespace std;

tuple<int, unsigned, string, int> getValues()
{
return tuple<int, unsigned, string, int>(1, 2, "3", 4);
}

int main()
{
int a;
unsigned b;
string c;
int d;

tie(a, b, c, d) = getValues();

cout << a << ", " << b << ", " << c << ", " << d << endl;
return 0;
}

编译它

g++ tuple_test.cpp -std=c++0x -o tuple_test

如果你运行程序,它会输出:

1, 2, 3, 4

但最好使用这样的引用(我会说):

void getValues(int& a, unsigned& b, string& c, int& d)
{
a = 1;
b = 2;
c = "3";
d = 4;
}

int main()
{
...
getValues(a, b, c, d)
...
}

这就是我没有仔细阅读问题的结果......

Can a function only return one value, unless it is a pointer to an array?

是的,您只能返回 1 个单个值,但是这个单个值可以包含多个值(结构、类、数组)。

You can return multiple data items using a structure but using pointer (I don't understand this) will use memory more efficiently. Is this correct?

没错。但是当你使用指针时,这取决于你如何使用它。当您动态分配它时,每个函数调用都不会非常有效,您需要在使用后手动释放内存。当您使用全局数组/结构时,它会很有效。但是当您多次调用该函数时可能会给您带来问题。

关于c++ - 从 C 或 C++ 中的函数返回多个数据项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7624779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com