我在创建指向多维列表的指针时遇到问题。在单个阵列的情况下 - 没有问题输出是应该的。在多维数组的情况下 - 生成错误消息。
#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;
答案 0 :(得分:1)
这实际上取决于你想要做什么,但2D数组不能衰减到单个指针。作为一个例子,指向数组的指针可以工作,让第一个维度衰减到指针:
int (*plist)[COLS] = list;
然后,您可以访问plist[i][j]
元素。
还要注意使用list
之类的名称,特别是如果你喜欢冒险,比如说using namespace std;
。