Re: Возвращение массива из функции
От: Gosha Украина  
Дата: 25.07.02 12:54
Оценка:
Здравствуйте LA Jazz, Вы писали:


LJ>typedef struct

LJ>{
LJ> int e1;
LJ> int e2;
LJ>} sA;


LJ>Как лучше осуществить возвращение массива структур sA из ф-ии:


LJ>1.

LJ>
LJ>void f(sA* pSA, int* count)
LJ>{
LJ>  int nmbSA = 4;
LJ>  ...
LJ>  sA *pRes = new sA[nmbSA];
LJ>  ... // do something with array
LJ>  pSA = pRes;
LJ>  *count = nmbSA;
LJ>}

LJ>main()
LJ>{
LJ>  int nmbSA = 0;
LJ>  sA *pSA = 0;
LJ>  f(pSA, &nmbSA);
LJ>  if(pSA)
LJ>    delete pSA;
LJ>}
LJ>



LJ>2.

LJ>
LJ>void f(sA* pSA, int count)
LJ>{
LJ>  int nmbSA = 4;
LJ>  ...
LJ>  sA *pRes = new sA[nmbSA];
LJ>  ... // do something with array
LJ>  memcpy(pSA, pRes, sizeof(sA)*(__min(nmbSA, count))
LJ>  delete pRes;
LJ>}

LJ>main()
LJ>{
LJ>  int nmbSA = 4;
LJ>  sA *pSA = new sA[nmbSA];
LJ>  f(pSA, nmbSA);
LJ>  delete pSA;
LJ>}
LJ>


А почему бы и не так:
sA* f(int count)
{
    sA* pSA = new sA[count];
    if (pSA){
        ...
        // do something with array
        ...
        return pSA;
    }else
        return NULL;
}

main()
{
    int nmbSA = 4;
    sA *pSA = f(nmbSA);
    if (pSA)
        delete pSA;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.