程序员的救赎 发表于 2018-5-28 00:04:36

如何动态申请二维数组空间(在行数不确定的前提下)

#include <iostream>
using namespace std;

int main()
{
        int num, L, H;
        cin >> num >> L >> H;         //int(*p);
        int **p;                               //cin >> num >> L >> H;
        p = new int*;            //p = new int ;
        for (int i = 0; i < 5; i++)
        {
                p = new int
        }
}左边是二级指针方法,右边是错误的方法,如果不用二级指针应该怎么做?

BngThea 发表于 2018-5-28 08:56:17

根据具体的二维数组长度计算其转换为一维,然后再用new

风过无痕丶 发表于 2018-5-28 13:44:40

vector<vector<类型>> 容器名;

BFSDT 发表于 2018-5-28 20:07:09

经测试,可以使用,没有问题
    int num = 3;
    int (*p) = new int;

    for (int i = 0; i < num; ++i) {
      for (int j = 0; j < 5; ++j) {
            p = 5 * i + j;
      }
    }
    for (int i = 0; i < num; ++i) {
      for (int j = 0; j < 5; ++j) {
            cout << p << " ";
      }
      cout << endl;
    }

    cout << "p: " << *(*(p+1)+3) << endl;

    delete[] p;



运行结果
0 1 2 3 4
5 6 7 8 9
10 11 12 13 14
p: 8

程序员的救赎 发表于 2018-5-28 20:13:51

BFSDT 发表于 2018-5-28 20:07
经测试,可以使用,没有问题




你试一下num改为外部输入。

程序员的救赎 发表于 2018-5-28 20:14:46

风过无痕丶 发表于 2018-5-28 13:44


大概知道一些,不过不打算用这个。想用指针解决

BFSDT 发表于 2018-5-28 20:18:00

程序员的救赎 发表于 2018-5-28 20:13
你试一下num改为外部输入。

没区别的
输入5之后
5
5
0 1 2 3 4
5 6 7 8 9
10 11 12 13 14
15 16 17 18 19
20 21 22 23 24
p: 8

程序员的救赎 发表于 2018-5-28 21:04:56

BFSDT 发表于 2018-5-28 20:18
没区别的
输入5之后

你的是对的,不过我不给p初始化,例如
int *p, num;
cin >> num;
p = new int;
就会提示错误了,那如何在定义之后再赋值呢?

BFSDT 发表于 2018-5-28 21:14:56

程序员的救赎 发表于 2018-5-28 21:04
你的是对的,不过我不给p初始化,例如

就会提示错误了,那如何在定义之后再赋值呢?

我这里分开也是没问题的,你应该是打错了吧
int *p, num;
正确的应该是
int (*p), num;

程序员的救赎 发表于 2018-5-28 23:18:13

BFSDT 发表于 2018-5-28 21:14
我这里分开也是没问题的,你应该是打错了吧

正确的应该是

是的!两者各自的含义不是一样的吗?

BFSDT 发表于 2018-5-28 23:37:53

程序员的救赎 发表于 2018-5-28 23:18
是的!两者各自的含义不是一样的吗?

不一样,int(*p)表示的是含有任意个数元素的数组,其中每个元素都是一个int数组,也就是
{
   {1,2,3,4,5},
   {1,2,3,4,5},
      ……
      {1,2,3,4,5}
}
而int*p表示的是一个有5个元素,每个元素都是int*的固定大小的数组,即
{int*, int* , int* ,int*,int*}
虽然int*可以指向一个数组,但是由于指向的不一定是int的数组,所以不能匹配
页: [1]
查看完整版本: 如何动态申请二维数组空间(在行数不确定的前提下)