Pointer függvény ami egy struktúra hozzáférhetősége header file-ból? o.O
A cím lehet, hogy egy kicsit fura, de nem tudtam jobban megfogalmazni.
Adott egy feladat (mindegy mi) a lényeg, hogy a függvényeket amiket használunk benne header file-ba kell rakni.
Na most annyi bonyodalom adódik, hogy a függvény alapvetően így néz ki:
int ujTag(ugyfel **u, int *m){...}
tehát egy Typedef struct ugyfel-lel létrehozott ugyfel típusú ugyfelek nevű pointert kellene hozzáférhetővé tenni egy header fileból.
Nagyon kezdő vagyok még, úgyhogy ha bármi olyasmit írtam amiből az következik, hogy fingom nincs, hogy miről beszélek akkor az nem direkt volt, hanem azért mert tényleg nem tudom.
Nem önszántamból csinálom a feladatot!
Tehát ne írjátok, hogy kezdjem könnyebbel.
Nem vagyok benne biztos hogy jól értem, de talán azt szeretnéd, hogy van több fájlod, és maga a változó is elérhető legyen mindegyikben? Szerintem globális változó ami neked kell. Legalábbis az alapján, amit leírtál/ahogy értem.
Header fájlban:
extern ugyfel* ugyfelek;
és az egyik source fájlban kifejted:
ugyfel* ugyfelek = mittudomén
Jobb ötletem nincs, amíg nem tudom mi kéne.
#2, szerintem csak rosszul fogalmazott a kérdezö, nem hinném, hogy az ugyfelek változót akarja elérhetövé tenni, hisz a függvény ezt paraméterül fogja kapni.
Sokat segítene, ha pastebin.com-ra, vagy valahova feltennéd a kódod és akkor látnánk, hogy mi a probléma.
Felteszem PTE MIK, mérnökinfo, 1. évfolyam.
Ha igen:
"a lényeg, hogy a függvényeket amiket használunk benne header file-ba kell rakni."
Nem. Függvényeket nem teszünk header file-ba. Oda a függvénydeklarációkat tesszük, meg, ahogy #1 írja a typedef -eket (a feladatban ugye az alkalmazott struktúrák leírásait).
Abban a feladatban a függvények "header"-jeit, értsd: a függvénydeklarációkat kell betenni egy fájlba, aminek kiterjesztése .h, magukat a függvényeket pedig egy másik fájlba, aminek kiterjesztése .c és a main -t egy szintén .c kiterjesztésű állományba.
Ha többen dolgoztok egy projekten, akkor mindenki hozzáteheti a saját .h és .c kiterjesztésű fájljait a projekthez....
De mindezt a tárgy oktatója annyiszor, de annyiszor elmondta már, meg leírta a feladatkiírásban, plusz kifejtette (sokkal) bővebben abban a majd' 300 oldalas jegyzetben, amit a tantárgyhoz mellékelt, s amiből egy nullkm -es kezdő is fel tud készülni a vizsgára önállóan is (onnan,, hogy mi az a forráskód, egészen a láncolt listák használatáig)...
Mi lenne, ha onnan tanulnál? Minden benne van, szájbarágósan leírva.
Plusz a megoldásra kiadott projekt részfeladataiból tartalmazza a megoldását. Kb annyit, ami már megér egy közepest (feltéve, ha a code review -n el is tudod magyarázni bármely részt, amibe belekérdez majd (megjegyzem, elég sokszor utalt erre is)).
Vagy esetleg igénybe vehetnéd a heti konzultációkat (ami jelen szakaszban ugye 14 óra + a fogadóóra minden héten, azaz heti 15 órán keresztül "zaklatható" az illető oktató (van, hogy nem ér rá, de jobbára igen, főleg, ha előtte írsz neki).
Ja, igen: "ugyfel típusú ugyfelek nevű pointert kellene hozzáférhetővé tenni egy header fileból".
Nem akarlak megsérteni, de ez így nem értelmes. Értelme úgy lenne, hogy egy adott függvényben - pl a main -ben - deklarált, ugyfel típusú, ugyfelek nevű pointert kellene hozzáférhetővé tenni egy (vagy több) hívott függvény számára.
Ha pl ezt a függvényt, amit írsz, azaz az
int ujTag(ugyfel **u, int *m){...} -t hívod mondjuk a main -ben, akkor az valahogy - nagy vonalakban - így festhet:
int main(){
ugyfel *ugyfelek = NULL; int meret;
ujTag(&ugyfelek, &meret);
.
.
.
}
ahol az &ugyfelek érték egy pointer címe, vagyis egy mutatót jelölő mutató értéke, ami ugye egy olyan mutatót jelöl, ami egy ugyfel típusú változó címére mutat. Ez lehet majd később egy dinamikus helyfoglalású struktúratömb első elemének a címe, már, ha nem láncolt listával dolgozol, hanem struktúratömbbel.
Ha megnézed, az első paraméter ugye ez: ugyfel **u, ahol u épp egy olyan pointer, ami egy olyan pointerre mutat, ami egy ugyfel típusú változót jelöl. Az újTag fgv hívásakor ez az u kapja meg az &ugyfelek által "megszült" értéket, vagyis innentől az ujTag fgv u nevű pointere az ujTag-ot hívó fgv ugyfelek nevű pointerére fog mutatni.
Az ujTag fgv-ből így úgy forgatható rá a hívó fgv ugyfelek nevű pointere egy címre, hogy azt írod a kódba, hogy
*u = ideKerülAzÚjCím (ami jöhet például egy realloc hívásából is).
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!