void funktion
Hej
Hur vet man om man ska använda void i sitt program?
Lite osäker. Jag fattar att void inte returnerar nåt, men det gör inte användningen enklare
Menar du när man skapar en funktion? Det beror helt på vad man vill att funktionen ska göra. I C behöver man inte returnera värden dock, du kan använda dig av pekare istället.
"void method()" betyder att metoden "method" inte returnerar något värde.
C-program använder i praktiken alltid minnespekare, språket är mer maskinnära än t ex Java.
"void *ptr" deklarerar en generisk minnespekare. Används t ex när man vill peka på olika saker med samma pekarvariabel.
Om du t ex vet att det ligger en int på den minnesdress som "ptr" pekar på kan du hämta värdet med:
int x = *(int*)ptr;
Eftersom ptr pekar på en "ingenting" måste vi tala om för kompilatorn att den ska tolkas som en int-pekare, sen hämtar "*" int-värdet på adressen.
"void *method2()" betyder att metoden "method2" returnerar en pekare.
Ännu en användning för ordet "void" är när en funktion inte tar några argument. Då skriver man t.ex.
int func(void)
Tillägg: 22 nov 2021 14:55
Jag kom på en användning till: om man har ett funktionsanrop som returnerar ett värde, men man inte vill ha värdet, så kan man låta bli att sätta en variabel till värdet, men då får man en varning för att man kanske har glömt det, så då kan man skriva (void) framför så kommer det ingen varning.
Några märkliga svar här. void används i ett antal tillfällen i C/C++:
En funktion som inte har något returvärde men har ett argument:
void myfunc(int i);
En funktion som inte har något argument och inget returvärde:
void myfunc(void);
Att deklarera en pekare till vad som helst:
void *p;
Läs på mer här: https://docs.microsoft.com/en-us/cpp/cpp/void-cpp?view=msvc-170
Vad var det som var märkligt?