创建动态二维数组与二维数组初始化
 #include <iostream>
using namespace std;

int main()
{

    int row, column;
    int sz;
    cout << "Enter the size of matrix, 2 * 2 or 3 * 3" << endl;
    scanf("%d%*c%d", &row, &column);
    sz = row * column;

    int **a = new int *[row];
    for (int i = 0; i < row; i++)
    {
        a[i] = new int[column]; 
    }
    //cout << "Please enter " << sz << " element of matrix:" << endl;
    a[3][3] = {{6, 1, 1}, {4, -2, 5}, {2, 8, 7}};

}

error: expected expression
a[3][3] = {{6, 1, 1}, {4, -2, 5}, {2, 8, 7}};
我想知道为什么这样做不对?我这样做的理由是a[3] = {1, 2, 3};
这样做是不是不是初始化,因为我已经动态分配了内存,已经创建了数组,所以a[3][3]= {{6, 1, 1}, {4, -2, 5}, {2, 8, 7}};是赋值多个值到一个数组元素a[3][3]

2个回答

初始化是在你定义的时候int a[3][3] = {{6, 1, 1}, {4, -2, 5}, {2, 8, 7}};
这样是没毛病的,而在定义之后a[3][3] = {{6, 1, 1}, {4, -2, 5}, {2, 8, 7}};这是赋值,a[3][3]这个楼上所说是第4行的第4列

xingjianfengaa
xingjianfengaa 回复xingjianfengaa: 之后也不再叫初始化,只能叫赋值操作
接近 2 年之前 回复
xingjianfengaa
xingjianfengaa 回复yuAriellexi: 对,定义是 “类型 名称 = 值”,你调用是不用再加类型的
接近 2 年之前 回复
yuAriellexi
yuAriellexi 只有int a[3][3] = {{6, 1, 1}, {4, -2, 5}, {2, 8, 7}}; 这种才是初始化。这样理解对么?
接近 2 年之前 回复
yuAriellexi
yuAriellexi 明白了,所以是,因为我定义过动态数组后,之后就是赋值了。
接近 2 年之前 回复
xingjianfengaa
xingjianfengaa 还有就算是a[2][2]这也只是一个值而已
接近 2 年之前 回复

数组是从0开始的 a[3][3]是第四行第四列,这样看就错误明显,你分配的不够。

yuAriellexi
yuAriellexi 我的想法是按照a[3] = {0, 1, 2}初始化这样
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问