首先,我做了一个返回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
)。