如果在一个程序中不知道一个二维数组需要有多少行,多少列,怎样定义并且为其分配2行2列的内存?

解决方案 »

  1.   

    cout<<"行";
    cin>>x;
    cout<<"列";
    cin>>y;
    char *a=new char[x][y];
      

  2.   

    cout<<"行";
    cin>>x;
    cout<<"列";
    cin>>y;
    char *a = new char[x * y];
    char *p[y];
    for (int i = 0; i < x; i ++)
    p[i] = &a[i * y];
      

  3.   

    char *p = new char[n*m];
      

  4.   

    agree to pomelowu(羽战士)
      

  5.   

    嗯~~还要改改~~~有点小错误:
    cout << "行";
    cin >> x;
    cout << "列";
    cin >> y;
    char *a = new char[x * y];
    char **p = new char*[y];
    for (int i = 0; i < x; i ++)
    p[i] = a + (i * y);
    最后,完了记得要
    if (p)
    for (i = 0; i < y; i ++)
    {
    delete [] p[i];
    p[i] = 0;
    }
    p = NULL;
    if (a)
    delete a;
      

  6.   

    C语言换成malloc 和 free就是了:
    char *a = (char *)malloc(sizeof(char) * x * y);
    char **p = (char **)malloc(sizeof(char *) * y);
    for (int i = 0; i < x; i ++)
    p[i] = a + (i * y);
      

  7.   

    if (p)
    for (i = 0; i < y; i ++)
    {
    free(p[i]);
    p[i] = 0;
    }
    p = NULL;
    if (a)
    free(a);
    =====================================
    我在VC6下运行会出错,怎么回事呀?
      

  8.   

    小弟终于明白了,多谢pomelowu(羽战士),可否将MSN或者泡泡或者QQ号留给小弟?
      

  9.   

    汗~~~是我写的问题:
    delete应该这样写:
    if (p)
    {
    delete [] p;
    p = NULL;
    }
    if (a)
    {
    delete [] a;
    a = NULL;
    }free应该这样写:
    if (p)
    {
    free(p);
    p = NULL;
    }
    if (a)
    {
    free (a);
    a = NULL;
    }
      

  10.   

    >小弟终于明白了,多谢pomelowu(羽战士),可否将MSN或者泡泡或者QQ号留给小弟?你太客气了~~不过在公司上不了这些~~就在CSDN上给我留言吧