这样不是用二级指针吗? 我已经定义了
可是不知道怎么初始化 赋值啊  
上边的问题 就是 初始化 和赋值的方法不对头的!
我知道 数组的 行高  可是 每一行的宽度是不同的  8-(
所以就写程上面的样子  虽然没报错 不过 二级指针成了 一个  CPOINT对象了

解决方案 »

  1.   

    试一试用双重循环
    for (i; ; ;)
     for (j; ; ;)
       *(drawpoint+i) + j = new CPoint;
      

  2.   

    我觉得你这一句有问题:
    drawpoint[i]=new CPoint[n]
    我把CPoint换成最简单的int类型试了一把,也还是不知道是什么东东。
      

  3.   

    我的意思就是要用二级指针 但就是不行  !
    专家的源程序在这里 我基本照抄  但就是不成功 
    我贴出来和上边我自己写的对比 大家看看我错在哪里*********************************
    //动态分配二维数组空间 

      m_iHight=10;//二维数组的高度 
     m_iWidth=10;//二维数组的宽度 
     //动态分配一个二维数组m_ppTable内存空间 
     //其类型为int 
      //m_ppTable指向该数组 
      int **m_ppTable;          //bob:这里就是我的定义
       m_ppTable=new int *[m_iHight];//bob:这里对应drawpoint=new CPoint*[height];  //动态分配m_iHight个类型为int *的内存空间 
     //分配的是行地址空间 
      for(int i=0;i<m_iHight;i++)           //bob:这里分配行宽
               m_ppTable[i]= new int[m_iWidth];    //动态分配m_iWidth个类型为int的内存空间 
      //分配的是某行的数值空间 

    //由此分配的二维数组空间并非是连续的 
    //可以使用m_ppTable[row][col]来给该二维数组赋值 
    //其中 0<=row<m_iHight;0<=col<m_iWidth; 
    ******************************
    我觉得我上边的和这个基本一样  但我的二级指针变成破烂了 555555
      

  4.   

    真是佩服你了,开了那么多帖子,分还是省着点用吧。我看了你的程序,写的应该没有问题,你是不清楚怎样对 drawpoint 赋值吗? 你的 calc 函数
    是要求 drawpoint[i] 中的值是初始化的还是在 calc 中赋值?你在 debug 时看到的 drawpoint 是 CPoint 对象,其实看到的是 drawpoint[0][0],
    实际上你是可以对 drawpoint[i][j] 进行赋值的, 比如 
    drawpoint[0][0].x=1;
    drawpoint[0][0].y=10;
    .
    .
    .
    drawpoint[2][0].x=3;
    drawpoint[2][0].y=5;只要不越界就可以了啊。
    仿照你的要求我写了下面一段代码,包括内存释放部分. CPoint **pPointArray; int iHeight=10;
    int iWidthArray[10]={4,8,9,2,3,6,7,2,8,9};
    int i, j; pPointArray = new CPoint* [iHeight];
    for(i=0; i<iHeight; i++)
    {
    pPointArray[i]=new CPoint[iWidthArray[i]];
    for(j=0; j<iWidthArray[i]; j++)
    {
    pPointArray[i][j].x=j;
    pPointArray[i][j].y=2*j;
    }
    } // XXXXXXXXXXX
    // .............. for(i=0; i<iHeight; i++)
    {
    if(pPointArray[i])
    delete []pPointArray[i];
    }
    delete []pPointArray;