指针和数组问题char *str[50];   str=new char[10][50];为什么出错啊我的意识是:我知道第二维数组的长度不知道第一维数组的长度如何动态产生第一维数组的长度

解决方案 »

  1.   

    指针和数组问题char *str[50];   str=new char[10][50];// 类型不符,一个指针数组,一个是固定的二维数组
    可以改为如下一段程序即可:
      for(int i=0;i<50;i++) str[i]= new char[10];
      for(int i=0;i<50;i++) delete[] str[i];
      

  2.   

    char** str;
    int n1,n2;//第一维和第二维的长度
    str=new char*[n1];for(int i=0;i<n1;i++)
    {
         str[i]=new char[n2];
    }
      

  3.   

    (接上)释放内存时这么写
    for(int i=0;i<n1;i++)
    {
        delete[] str[i];
        str[i]=NULL;
    }
    delete[] str;
    str=NULL;
      

  4.   

    动态分配是表示需要时才分配。
    定义变量num;num=0;需要分配时:
    str[num]=new char[50];
    num++;删除时: delete[] str[num];