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
- 4312 megtekintés
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.
- A hozzászóláshoz be kell jelentkezni
Az nem úgy van, hogy C-ben nem tud tömbbel visszatérni függvény?
- A hozzászóláshoz be kell jelentkezni
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.)
- A hozzászóláshoz be kell jelentkezni
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á?
- A hozzászóláshoz be kell jelentkezni
Mint alább írtam, nem kell visszatérned a vektorral, mivel a DLL miatt a vektort a hívó félnek kell lefoglalnia. Emiatt azt is paraméterben kell átadni.
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
KR2
Morzel
- A hozzászóláshoz be kell jelentkezni