我想把从数据采集板采集的数据放入计算机中,要开辟内存我知道用new,但是我想开辟一个动态结构体缓冲区,把采集的3路数据放入其中,等待进一步处理,这块请问程序如何编啊

解决方案 »

  1.   

    new 3 个不就行了。要不你就做结构体的内存池。
      

  2.   


    struct A
    {
    TACHR * pdate1;
    TACHR * pdate2;
    TACHR * pdate3;
    };
      

  3.   


    struct A
    {
    TACHR * pdate1;
    TACHR * pdate2;
    TACHR * pdate3;
    };A a;
    const int length = 5000;
    a.pdate1 = new TCHAR[length];
    a.pdate2 = new TCHAR[length];
    a.pdate3 = new TCHAR[length];
      

  4.   

    看清楚了
    typedef struct tagLIST //新的数据类型
    {
       float x;
       float y;
       float z;
       struct tagLIST *next;
    }MYLIST;
    MYLIST *Head=NULL; //定义链表的头
    MYLIST *Tail=NULL; //定义链表的尾
    MYLIST *First=NULL; //定义当前指针,为循环链表准备//下面开辟一个3000个点的数据for(int i=0;i<3000;i++)
    {
        MYLIST *p= new MYLIST;  //新分配1个数据
        p->x=p->y=p->z=0.0;     //初始化
        p->next=NULL;
        if(NULL==Head)          //如果还没有数据,就是第一个数据
           First=Tail=Head=p;
        else
        {
            Tail->next=p;       //新数挂在尾巴上
            Tail=Tail->next;    //新的尾巴在后一位置了
        }
        
        Tail->next=Head; //循环链表就加上下面这句,尾巴连到头
    }//现在来看看如何把这缓冲画到屏幕
    while(1)
    {
        采集新数据给First赋值;
        MYLIST *pCur=First->next; //pCur就是最老的数,First是最新的数
        while(pCur!=First) //走一圈,从最老的数一直扫到最新的数
        {
            取pCur->x;
            取pCur->y;
            取pCur->z;
            计算成坐标并画图
            pCur=pCur->next; //下一点
        }
        First=First->next; //每次画完,开始位置下挪一个位置
    }
      

  5.   

    typedef struct tempstruct //新的数据类型
    {
       int  ndatalen;//记录 pdata[] 的长度
       char* pdata;//记录首地址
    }mytempstruct ;
      

  6.   

    更推荐9L的方法,如果自己写的链表没有超过STL的,应当用STL的。
      

  7.   

    对于STL我怎么来形容呢?
    我觉得用卤肉来形容比较恰当
    卤肉好吃不?,当然好吃
    不过,如果你有机会看到卤肉的制作过程,包括价格
    相信你会选择买新鲜肉回家自己卤但如果你一辈子没机会看到
    其实也没啥大不了的
    吃多少都不会怀孕的当然,麻辣和五香混合的味道你这辈子是尝不到了