int (*p)[4];我用以上数组存放线段的起点和终点。
但每产生一跟线段就用一个数组p[i][4]将他记录下来。
我怎么给p[i][4]动态分配内存呢?

解决方案 »

  1.   

    如果你每次画的时候知道有多少线段(如aa 条),就可以
    int* p[2];
    p[0]=new int[aa];
    p[1]=new int[aa];
    如果不知道,那么就用CArray,或者用一个比较苯的方法就是还用指针但定义aa比较大(通常情况下大于要画的线段数就可以了)。
      

  2.   

    不是的,int (*p)[4] 存的是起点和终点的4个坐标值(x,y)。
    每画一跟产生一跟,不知道有多少根?
    上面那种应当不行的。
    请问用CArray怎么实现呢?我没用过?刚学啊?谢谢了!!
      

  3.   

    用CList怎么实现呢?我是刚学的?
    谢谢你了!!!
      

  4.   

    int *p=new int[4];
    p就是指向一个16个字节的内存的整型指针。
    使用时就用
    p[0]=10;//*p=10
    p[1]=20;//*(p+1)=20
    p[2]=30;//*(p+2)=30
    p[3]=40;//*(p+3)=40
    记得使用完后分用free []p来释放啊。
    至CList链表类和CArray数据类还是慢慢来,学一学《数据结构》方面的书,会有更大的帮助。
      

  5.   

    如果是二维数据,也是一样。
    int *p=new int [4][4];
    通过索引方面引或是直接通过移动指针方式引用都一样。
    建议完全理解指针后再学习其它,这样基础会牢靠一些。小小指针真伟大!
      

  6.   

    //定义结构体
    struct xy{
    int x1;
    int y1;
    int x2;
    int y2;
    };//声明list
    CTypedPtrList<CPtrList,xy*> list;
    xy* p=new xy;
    p->x1=1;
    p->x2=2;
    p->y1=3;
    p->y2=4;
    list.AddTail(p);
    p=new xy;
    p->x1=10;
    p->x2=20;
    p->y1=30;
    p->y2=40;
    list.AddTail(p);
    POSITION pos=list.GetHeadPosition();
    while(pos)
    {
    xy* p1=list.GetNext(pos);
    //操作p1
    }//释放list
    pos=list.GetHeadPosition();
    while(pos)
    {
    xy* p1=list.GetNext(pos);
    delete p1;
    }
    list.RemoveAll();
      

  7.   

    要根本解决问题还是要自己去看MSDN中CPtrArray之类的用法!
      

  8.   

    谢谢各位了。
    我这样不行吗?
    int *p[4]; //用他表示动态数组每增加一个数组就分配一个内存
    *(p+i) = new int[4]
    i++
    难道面这样写不行吗?
    谢谢了