c programnyelv, tömbök használata függvényekben

Fórumok

Hello egy C-s függvényhez kérném a segítséget. Ez azt csinálja, hogy két tömbbel, és egy integer-el hívnám meg, és egy tömbbel térne vissza.

int cica(vekt kutya, vekt akarmi, int barmi)

az integer az egyik tömb méretét tartalmazza, a másik tömb mérete egyenlőre kötött. Visszatérési értéke pedíg egy akkora tömb lenne, mint amekkorának a méretével a függvényt meghívtuk. Megoldható ez így? Hogy lehet megoldani, hogy a függvény egy teljes tömbbel térjen vissza? Egyáltalán megoldható?

A másik kérdés az lenne, hogy egy ilyen függvényből hogy lehetne windows-os dll-t készíteni?

Elöre is köszönöm a segítséget

Hozzászólások

visszatérési érték a fenti jelölés szerint:
vekt fv(paraméterek)

DLL is készíthető belőle, hiszen csak C-s adatstruktúrákat használsz.

Az nem úgy van, hogy C-ben nem tud tömbbel visszatérni függvény?

C-ben nincs olyan, hogy tömb, csak egy összefüggő memóriaterület, amihez tartozik a terület elejére mutató pointer. gyk:
int a[10]; valójában egy 10*sizeof(int) hosszú memóriadaraba, ahol az "a" egy pointer, az elejére mutat, vagyis *a == a[0].

Pointerrel hogy ne tudna visszatérni, a POSIX API-ban is van jópár ilyen függvény (pl. fgets, gets, stb.)

az alkalmazás többi részét nem én készítem. Ez a függvény csak egy lehetőség lesz másik kettő mellett. Ha jól értem amit mondasz, egy pointerben megkaphatom a tömb címét, és onnan megint csak rendelkezek a tartalmával, és ugyanígy vissza is tudom adni.

A kezdőproblémában leírt példát egy C könyvből írtam. Ezek szerint a válaszoddal

vekt fv(paraméterek)
vissza tudom adni a tömböt, vagy csak mint egy jelölés utaltál rá?

Ha DLL-ről van szó, akkor célszerű, hogy a hívó fél foglalja le a visszatérési vektorhoz szükésges memóriát is, mivel vélhetőleg neki kell felszabadítani is. Én pointerként adnám át a vektorok címét.