Gå til innhold

Void: Hva betyr det?


Anbefalte innlegg

Videoannonse
Annonse

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... :p

Lenke til kommentar

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 av THROBiX
Lenke til kommentar

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...