该结构数组数目和内容事前未知,我希望通过一个函数,求出结构数组,该结构为sc,我从前定义是,fun1(sc* sc1,int &numSc),在函数体内求值,都对,可一返回,调用地方都不对了,我知道应该是:
fun1(sc** sc1,int&numSc),可我从定义到赋值使用到返回,都不会。希望各位莫笑话我,耐心一点,给出个例子,越完整越好。

解决方案 »

  1.   

    你传的是结构体的指针的地址,用的时候这样写: (*sc1)->mebner
      

  2.   

    fun1(sc** sc1,int&numSc)!(*sc1) = new ...
    ...
      

  3.   

    int fun2(sc** sc1,int&num)
    {
    sc*  pSc[n];  i = 0;
      while(i<n){
       pSc[i++]  =  new sc;
    }   loop(n,1)
       {
        *sc1  = pSc[; 
        sc1+= sizeof(sc);
       }
    }
      

  4.   

    void xx( sc **sc1,int &num )
    {
        *sc1 = new sc[10];
        for(int i=0;i<10;sc1[i++]->nMember=i);
        num=10;
    }
      

  5.   

    OLE DB中这样的接口多得很。
    一般说往外传数组,调用者要管释放的Fun( struct tagABC ** ppOut, ULONG * pCount )
      

  6.   

    回hhyytt,我用第一种方法,函数体内部有效,可传出来后,指针为NULL。请问,hailongxl兄弟,在调用处怎样声明呀,是:
    sc **sc1=NULL;
    xx(sc1,num); //调用吗?
    使用完毕后,delete[] sc1;  //释放内存
    对吗?
      

  7.   

    我使用如下:
    函数定义fun1(sc **sc1,int &num)
    {}
      

  8.   

    我使用如下:  
    函数定义fun1(sc  **sc1,int  &num)  
    {  
      num=GetNum()....; //获取数目
      *sc = (sc *)calloc(num,sizeof(sc)); //分配空间
      ...
      
    } 调用处:
    sc* scVaule=NULL;
    int num;
    fun1(&scVaule,num);
    a=scVaule[1].member1;
      ...
    if (scVaule!=NULL) free(scVaule); //????此句报错!内存堆错误,程序跳出。编译后试用都正常(前提,去掉最后一句),但我心虚虚的,希望大家帮忙过一过,尤其最后一句,函数体外释放出错,怎么回事?另外,若我每个指针都sc1++,最后指针应指向最后一个;那指针应怎样指回头指针,是sc1-num吗?