注册 登录
编程论坛 C++教室

【求解释】关于new二位数组的问题

wenxinwukui 发布于 2011-08-18 12:18, 391 次点击
如下代码:

        int** a = new int*[3];     // 1
        for(int i = 0; i < 2; i++)  //2
            a[i] = new int[2];

请问这创建的时一个2*3 的数组还是一个3*2的数组?
个人感觉步骤1 是见了一个存放三个整型数组指针的数组,步骤2对每一个指针new一个大小为2的数组。这样看来应该是新建了一个三行两列的数组。但是我运行下面代码的时候出错:
        for (int i = 0; i< 3; i++){
            for(int j = 0; j < 2; j++){
                a[i][j] = 0;
                cout << a[i][j] << " ";
            }
            cout << endl;
        }
如果下面这样写就对:
        for (int i = 0; i< 2; i++){
            for(int j = 0; j < 3; j++){
                a[i][j] = 0;
                cout << a[i][j] << " ";
            }
            cout << endl;
        }
请各位高手分析一下什么原因,谢谢。
3 回复
#2
baobaoisme2011-08-18 12:55
我也是觉得是个3*2的数组
楼主, for(int i = 0; i < 3; i++)  //2
            a[i] = new int[2];
改成3,应该就ok了,看着只是小问题,少分配一个数组
#3
wenxinwukui2011-08-18 13:02
回复 2楼 baobaoisme
哦,原来是这个写错了,。多谢了
#4
rjsp2011-08-18 13:27
这不是二维数组

“二维数组”的每个元素都是个“一维数组”,而非指向“一维数组”的指针
1