指向多维数组的指针

时间:2014-10-15 20:10:44

标签: c++ arrays multidimensional-array

我在创建指向多维列表的指针时遇到问题。在单个阵列的情况下 - 没有问题输出是应该的。在多维数组的情况下 - 生成错误消息。

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    const int ROWS = 3, COLS = 4;
    int list[ROWS][COLS] = { {4, -3, 5, 6}, {5, 1, 7, 2},{-4,6,10,-8}};
    int list2[] = {3, 6, 9, 2};

    int *plist = list;
    int *plist2 = list2;

    for (int row = 0; row < ROWS; row++)
    {
        for (int col = 0; col < COLS; col++)
            cout << setw(4) << list[row][col] << " ";

        cout << endl;
    }

    cout <<  *plist  << endl;
    cout <<  *plist2  << endl;
    return 0;
}
  

main.cpp:11:14:错误:初始化时无法将“int()[4]”转换为“int ”   int * plist = list;

1 个答案:

答案 0 :(得分:1)

这实际上取决于你想要做什么,但2D数组​​不能衰减到单个指针。作为一个例子,指向数组的指针可以工作,让第一个维度衰减到指针:

int (*plist)[COLS] = list;

然后,您可以访问plist[i][j]元素。

还要注意使用list之类的名称,特别是如果你喜欢冒险,比如说using namespace std;