nwinger Skrevet 23. juli 2008 Del Skrevet 23. juli 2008 (endret) - Endret 4. februar 2010 av nwinger Lenke til kommentar
Arne Skrevet 23. juli 2008 Del Skrevet 23. juli 2008 Slik det brukes i funksjoner, indikerer det at funksjonen ikke returnerer noe. En slik funksjon har kanskje en spesiel effekt, som for eksempel å skrive ut noe eller å endre en gitt variabel. Her er et eksempel på en void-funksjon: void print_it(string text) { cout << text << endl; } Her ser du at at side-effekten er at vi printer ut argumentet til funksjonen. Funksjonen returnerer ikke noe her. Hvis du lager en main-del og kjører denne funksjonen slik: print_it("Arnerulervilt"); , printer du ut Arnerulervilt på skjermen. Hvis du skriver string a = print_it("hehe"); vil du mest sannsynlig få error når du compiler, siden ikke print_it() returnerer en string. Men her er en situasjon du kanskje kommer opp i. Du vil ved hjelp av en funksjon endre innholdet i en variabel til det brukeren taster inn. Da går det ikke med en void-funksjon som bare printer ut på skjermen. Da kan du enten gjøre slik, der du endrer variabelen direkte, via en refferanse til mål-variabelen som er gitt som et argument når funksjonen blir kjørt: #include <iostream> #include <string> using namespace std; void print_it(string& a) { cout << "Hva vil du lagre i variabelen?:" << endl; cin >> a; } int main() { string text; print_it(text); cout << text; cin.get(); return 0; } ...eller du kan gjøre slik som dette, der funksjonen returnerer en verdi: #include <iostream> #include <string> using namespace std; string print_it() { string a; cout << "Hva vil du lagre i variabelen?:" << endl; cin >> a; return a; } int main() { string a = print_it(); cout << a; cin.get(); return 0; } Det som skjer her, er at du tilegner variabelen a verdien av det som returnerer fra print_it(). Håper dette kunne hjelpe, selv om svaret mitt ikke bare handlet om void... Lenke til kommentar
Tannkrem1 Skrevet 24. juli 2008 Del Skrevet 24. juli 2008 (endret) Du kan gi en peker en void-datatype for å gjøre den universal... Samme i funksjoner, func(void* peker... Da kan du på en måte tilpasse datatypen i ettertid, men den godtar .. det meste, for å si det sånn. EDIT: Ok, jeg er ikke helt sikker, men det er noe i den duren tror jeg. En slags falsk datatype som ikke er noe. Endret 24. juli 2008 av THROBiX Lenke til kommentar
NevroMance Skrevet 24. juli 2008 Del Skrevet 24. juli 2008 THROBiX, i det tilfellet ditt er det vel mer en minneadresse til ukjent datatype? For du får vel ikke gjort noe med void-pekeren din, bare castet den om til riktig datatype? Lenke til kommentar
Dead_Rabbit Skrevet 26. juli 2008 Del Skrevet 26. juli 2008 Det stemmer. void-pekere handler om å peke til noe ukjent, og du får derfor ikke gjort stort med det før du kaster den til riktig type. Lenke til kommentar
亚历山大 Skrevet 27. juli 2008 Del Skrevet 27. juli 2008 Arner har forsåvidt rett, men man må huske på at hvis man for eks. vil at funksjonen skal kjøre til en verdi blir forandret for eks. at vi venter på at 'i' (int) skal bli noe annet enn 0 og så skal funksjonen gjøre det som den er laget til (Kanskje litt dårlig forklart, men man bør se det ut fra eksemplet som kmr nedenfor.) int i = 0; void myfunc(void) { if(i == 0) return; //din code } int main() { while(1) { //her kan du for eks. få noe til å sette i til noe annet enn 0 myfunc(); } return (i); // kan returne i som et eks. men du kan likså godt sette denne til 1 eller 0. } - Aleksander - Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå