Aliohjelma laskeskelee useampia asioita... Miten aliohjelmasta palautetaan useampia tietoja (paluuarvoja)?
Miten palauttaa aliohjelmasta useampi tieto
4
448
Vastaukset
- ..
... joka osoittaa structiin tai taulukkoon. Oletan kielenä olevan C, koska et maininnut. Varaa muistia funktiossa, kopioi arvot sinne ja palauta muistin osoitin. Funktiota kutsuvan vastuulla on sitten vapauttaa muistialue.
Jos funktiota kutsutaan usein, tehokkaampi vaihtoehto on vaatia parametreinä "työalue" (ja sen koko) jonne data kopioidaan. Jos koko ei riitä, paluuarvona annetaan riittävä muistialueen koko. Näin funktiota kutsuva voi varata muistin etukäteen ja uusiokäyttää samaa varattua aluetta monta kertaa. Tämä tekee kutsumisesta työläämpää, mutta kokonaisuus on nopeampi, koska muistin varaus ja vapautus on usein melko hidas operaatio.
Voit myös aina määritellä funktion parametreinä osoittimia. Tällöin paluuarvoa käytetään perinteisesti vain virhetilanteiden raportointiin.
include errno.h
include stdio.h
int funktio(int luku1, luku2, int *summa, int *vahennys)
{
if(summa == NULL || vahennys == NULL)
return EFAULT; /* Ohjelman sisäisien NULL-arvojen tutkimista tulisi välttää, paitsi kun ollaan esim. tekemisissä ulkopuolelta tulevan datan kanssa. Rakenteesta tulisi tehdä sellainen, että NULL-arvot eivät ole mahdollisia. Debug-versioissa tietysti käytetään ASSERT:teja yms. Tässä esimerkin vuoksi virheiden palautuksesta. EFAULT on standardikirjaston virhekoodi, bad address, invalid pointer, yms. */
*summa = luku1 luku2;
*vahennys = luku1 - luku2;
return 0; /* 0 = ei virhettä */
}
int main()
{
int summa, vahennys;
if(funktio(5, 3, &summa, &vahennys)==0)
printf("summa=%d vahennys=%d\n", summa, vahennys);
return 0;
}- gsssdf
Eikös siis tartte return lausekkeella palauttaa noita arvoja vaan ne menee jo tuossa: *summa = luku1 luku2; *vahennys = luku1 - luku2;
(Tai siis onhan tuossa tuo return 0;) - aloittelija ohjelmoija
gsssdf kirjoitti:
Eikös siis tartte return lausekkeella palauttaa noita arvoja vaan ne menee jo tuossa: *summa = luku1 luku2; *vahennys = luku1 - luku2;
(Tai siis onhan tuossa tuo return 0;)Jep ehdinkin testata tätä asiaa ja tein itse tällaisen
#include
#include
int funktio(int luku1, int luku2, int *summa, int *vahennys);
int main()
{
int summa, vahennys;
int luku1=5;
int luku2=2;
funktio( luku1, luku2, &summa, &vahennys);
printf("summa=%d vahennys=%d\n", summa, vahennys);
getche();
return 0;
}
int funktio(int luku1, int luku2, int *summa, int *vahennys)
{
*summa = luku1 luku2;
*vahennys = luku1 - luku2;
return 0; /* 0 = ei virhettä */
}
Kiitoksia neuvoista, pääsin ehkä jyvälle asiasta. - aloittelija ohjelmoija
aloittelija ohjelmoija kirjoitti:
Jep ehdinkin testata tätä asiaa ja tein itse tällaisen
#include
#include
int funktio(int luku1, int luku2, int *summa, int *vahennys);
int main()
{
int summa, vahennys;
int luku1=5;
int luku2=2;
funktio( luku1, luku2, &summa, &vahennys);
printf("summa=%d vahennys=%d\n", summa, vahennys);
getche();
return 0;
}
int funktio(int luku1, int luku2, int *summa, int *vahennys)
{
*summa = luku1 luku2;
*vahennys = luku1 - luku2;
return 0; /* 0 = ei virhettä */
}
Kiitoksia neuvoista, pääsin ehkä jyvälle asiasta.siis include stdio ja conio
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Mitä yhteistä on sulla ja kaivatulla?
Onko teillä samantyyppinen olemus tai luonne? Vai muistuttaako vartalonne toisiaan? Tai kasvot? Entä pukeutuminen? Onko991516- 2231136
Kerran oltiin mekin kahdestaan
Saanko sanoa, että minua kyllä vähän huvitti jälkeenpäin? Olit kuin vapiseva jänis ketun vieressä valmis loikkimaan paik131136Oikeasti, voitais mennä kahville
ja jutella niin kuin normi-ihmiset. Kyllä toivon sitä. En pelkää kohdata enkä istua sun kanssa samassa pöydässä. Miten o81949Persut yritti estää somalinaista väittelemästä lääketieteen tohtoriksi
Yrittivät saada hänet lähihoitajakouluun, vaikka pärjäsi hyvin koulussa. Nyt hän on yliopistossa väitellyt lääketieteen240941- 141920
Jos nainen harrastaa seksiä
Useiden kanssa, miten se eroaa miesten mielestä siitä, jos miehellä on ollut useita s kumppaneita? Oletan että kaikki mi179903Pihlaja-puulle
Illat on mulle pahimpia. En tiiä miks se olis vaan parasta yöstä toiseen nukkua sun kanssa ja herätä sun kasvoihin. Jos15819- 71757
Yritin keväällä unohtaa sinut nainen
mutta siinä kävi niin, että ikävä tuli korkoineen takaisin. Niin että mikä taikavoima sinulla on minuun, sitä joutuu mie31713