5 svar
564 visningar
HiMate123 352
Postad: 22 nov 2021 12:23

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 

Fermatrix 7841 – Fd. Medlem
Postad: 22 nov 2021 12:31

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.

Programmeraren 3390
Postad: 22 nov 2021 12:45 Redigerad: 22 nov 2021 12:45

"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.

Laguna Online 30472
Postad: 22 nov 2021 14:43

Ä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.

 

Peter_ 470 – Avstängd
Postad: 5 dec 2021 18:06

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

Laguna Online 30472
Postad: 5 dec 2021 18:36

Vad var det som var märkligt?

Svara
Close