下面是我的 main()
函数:
int main()
{
int N = 4;
int A[N][N] = {
{1 , 0 , 0 , 0},
{1 , 1 , 0 , 1},
{0 , 1 , 0 , 0},
{1 , 1 , 1 , 1}
};
for (int i = 0; i < N; ++i)
{
for (int j = 0; j < N; ++j)
cout << A[i][j] << " ";
cout << "\n";
}
cout << "\n";
printSolution(N , *A);
cout << "\n";
return 0;
}
在这里,我声明了一个 4x4 数组,其中包含值。下面给出的是 printSolution,我将指针传递给其中的数组。
void printSolution(int N , int *sol)
{
for (int i = 0; i < N; ++i)
{
for (int j = 0; j < N; ++j)
cout << *((sol + i) + j) << " ";
cout << "\n";
}
}
下面是输出:
1 0 0 0
1 1 0 1
0 1 0 0
1 1 1 1
1 0 0 0
0 0 0 1
0 0 1 1
0 1 1 0
从输出中可以看出,main 函数中的 for 循环正确打印了数组,而 printSolution()
函数无法正确打印它。为什么会这样?
最佳答案
*((sol + i) + j)
比如说,对于 i = 2 和 j = 2,这仅仅是 *(sol + 4)
,即第 1 行第 0 列中的元素(正是打印的内容。)
你可能需要 *((sol + i * N) + j)
。
关于c++ - 数组作为指针传递给函数时无法正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51496389/