Ha két változót szeretnék visszakapni egy fuggvénytol, akkor azt hogyan olvaso ki?
Idaig csak egy valtozot kellet, amit a main fuggvenybol pl. igy tudtam visszaadni :
int x = Afunc();
de ha ket erteket raknak be a Afunc() fuggveny visszateresebe ,akkor azt hogyan tudom hozzarendelni a main fuggvenybe ket kulonbozo valtozonak,hogy egyik az elsot a masik valtozo a masik erteket kapja meg ?
int x,y = Afunc(); - valami hasonlo lessz ....?!?
Összetett visszatérési értékkel vagy kimenő paraméterrel.
Csak érdekességként: a C# 7 például tudni fog olyasmit, amit szeretnél.
Megprobalom mashogy megfogalmazni.
Hogy lehetne azt megoldani,hogy egy fuggvenynek legyen két visszateresi erteke/valtozoja.
pl.
int Afunc(){
valamit szamol
return a,b;
}
ha ez lehetséges - akkor ezt a ket erteket hozzarendelni valamihez hogy lehet majd a main fuggvenyben ?
pl.
int a = Afun().a; - gondolom ez nem jo,de valami hasonlot szeretnek elerni C nyelvben.
int b = Afun().b;
A gyakorlatban legkönnyebben így:
int Afunc(int* A, int* B) {
if (A == NULL || B == NULL) {
//Hiba van, nem lett megadva valamelyik memóriacím
return 0; //Hogy megelőzzük a program lehalását, itt hibát dobhatsz.
}
*A = 5;
*B = 6;
return 1; //jelezvén, hogy minden rendben volt
}
int main() {
int a;
int b;
if (Afunc(&a, &b)) {
//Minden rendben volt, az a-ba és a b-be a jó értékek kerültek bele
}
else {
//vigyázni kell, mert valami félre ment, így se az a, se a b nem tartalmaz jó értékeket
}
return EXIT_SUCCESS;
}
Ooh koszi.
Ezt lehet ugy is,hogy nem adunk meg paramternek semmit a fuggvenynek . Szoval a func() nem ker bemeno parametert..
struct Asd {
int A;
int B;
};
struct Asd func() {
struct Asd eredmeny;
eredmeny.A = 5;
eredmeny.B = 6;
return eredmeny;
}
int main() {
struct Asd valami = func();
return 0;
}
Így, ahogy a fenti leírta nem, hiszen meg kell adnod neki valahogy, hogy pakolja be az értékeket. Mellesleg tök jó, hogy nem írtál nyelvet.
Alternatíva:
- Szétszeded a függvény működését két függvényre, és külön-külön adod vissza az értékeket (sok esetben nem hatékony)
- Létrehozol egy adatszerkezetet, ami két integer mezőből áll, és abban adod vissza (struct a barátod)
- Nem két int változóba adod vissza, hanem egy int tömbben
Bónusz agymenés:
- Stringben adod vissza, elválasztókarakterrel, és utána a stringet szeded szét két értékre.
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!