如何在方法中返回c++数组指针
How to return C++ Array Pointer in method
首先,我做了一个返回Array[2]指针的函数。
int* ReturnArray(int a, int b) {
static int Array[2];
Array[0] = a;
Array[1] = b;
return Array;
}
我在Main中创建了一个简单的二维数组。
int a, b;
in >> NumberOfSize;
int** S = new int*[NumberOfSize];
for (int i = 0; i < NumberOfSize; i++)
S[i] = new int[2];
最后,我添加了ReturnArray(a,b)来设置S[I]的值
for (int i = 0; i < NumberOfSize; i++)
{
in >> a >> b;
S[i] = ReturnArray(a, b);
}
但是在Main中,我无法在数组S[I][j]中获得正确的值。当我将upper way改为under时,我可以在数组s中设置正确的值
for (int i = 0; i < NumberOfSize; i++)
{
in >> a >> b;
S[i][0] = ReturnArray(a, b)[0];
S[i][1] = ReturnArray(a, b)[1];
}
上面发生了什么?
和我怎么能得到正确的值在只有一个调用ReturnArray函数?
(抱歉我的英语很笨)
问题是你在函数中有一个static
局部变量,这意味着对函数的所有调用将共享相同的数组并修改相同的数组,这意味着只有在最后一次调用中设置的值将是你使用的。
std::pair
或std::tuple
,并且在函数中没有任何静态数组(或任何static
)。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '