c++ - 数组作为指针传递给函数时无法正确显示

标签 c++ pointers

下面是我的 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/

相关文章:

无法访问地址处的内存

c++ - 递归 std::functional 与递归匿名命名空间函数。使用哪一个?

c++ - "Fatal error C1083: Cannot open include file"但我已将目录添加到项目

c++ - 无法解决语法错误

c++ - 多线程 C++,将带有参数的函数从类传递到 main

c++ - 数据文件的 ld 使数据大小成为 *ABS* 而不是整数

c++ - 在C++中定义二维数组的最简单方法

c++ - 每次制作都会创建预编译头?

c++ - 我们不能在 C++ 中只有对象的变量吗?

c - 如何修改已传递给 C 函数的指针?