Ga naar inhoud

[C] Wat is void, wat kan je ermee en hoe gebruik je het?


anoniem

Aanbevolen berichten

Ey, Ik ben net begonnen met C programeren en kom het 'begrip' void heel vaak tegen. De ene keer voor een functie (bv.: ' void main()' ) de andere keer tussen de argumenten (bv: 'main(void)' ) Op een forum was er iemand die de volgende vraag stelde en het daarop volgende antwoord kreeg: V: (void *)primairy_buffer (void **)&piy Het gaat om de voids tussen haakjes wat zijn het? A: Het zijn casts, zij kunnen variabelen van het ene type naar het andere type converten. Ok, maar zoals void bij functies gebruikt word lijkt mij dat niet van toepassing. Wat doet dit dan bij functies en hoe kan je er variabelen met converteren? GRTZ, Rene
Link naar reactie
Als je van een functie een void maakt, wil dat zeggen dat die functie niets teruggeeft. Als je er bijv. een int van maakt wil dat zeggen dat het een getal teruggeeft. Bijv: [code:1:8ed8c54958] #include <stdio.h> void functie() { printf("Hallo"); } void main() { functie(); } [/code:1:8ed8c54958] Geeft geen waarde terug [code:1:8ed8c54958] #include <stdio.h> int functie() { return 1+2; } void main() { int totaal = functie(); printf (%i, totaal); } [/code:1:8ed8c54958] Geeft de waarde 3 (1+2) terug. Void gebruik je dus als een functie geen waarde hoeft terug te geven.
Link naar reactie
Ik kan void functies gebruiken als je niet precies weet wat er uit gaat komen (meestal in het geval van pointers). Hier een voorbeeldtje met een void functie (malloc (standaard c-functie in o.a. alloc.h) [code:1:73f79273b6] struct test { int bla; int bla2; char naam[20]; } int main (void) { float *ptrf; int *ptri; struct test *ptrt; ptrf = NULL; //De pointers wijzen nu naar "het zwarte gat" van je OS ptri = NULL; ptrt = NULL; ptrf = (float)malloc(sizeof(float)); //Alloceer een stukje geheugen ter grote van een float en plaats het adres in ptrf. ptri = (int)malloc(sizeof(int)); //Alloceer een stukje geheugen ter grote van een int en plaats het adres in ptri. ptrt = (struct test)malloc(sizeof(struct test)); //Alloceer een stukje geheugen ter grote van de struct test en plaats het adres in ptrt. return 0; } [/code:1:73f79273b6] Omdat de functie malloc allerlei verschillende geheugen stukje kan alloceren en hij niet weet waar voor het geheugen gebruikt gaat worden geeft hij een void pointer terug die jij zelf moet casten naar een ander type. Martin.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...