Ga naar inhoud

void


Aanbevolen berichten

ik was bezig met een c tuto maar ik stuyitte op het volgende probleem... ik weet niet precies wat void doet: [quote:78da33024f]Void: Het void type is een speciaal type, het geeft de afwezigheid van een waarde aan. Het meest gebruikte methode is de weergave van de terugkomst waarde van methodes, een ander gebruik is een expressie waar een expressie niet nodig en ook niet toegestaan is. Void is de enige void-type waarde, geen handelingen kunnen worden uitgevoerd op void, en er is geen standaard waarde voor de void type. [/quote:78da33024f] lijkt het hierop of niet, en kan er iemand een voorbeeld van geven?? vriendelijke groet, deev
Link naar reactie
Hmmm, als je zelfs al niet weet wat void inhoudt, zal ik eerst nog maar eens even verder zoeken naar een echte beginners tutorial, maar goed: Sommige talen kennen functies en procedures. Functies geven waarden terug, procedures niet. In talen als C en Java heten dat allemaal methodes. Wil je nu dat de methode geen waarde teruggeeft (een procedure zeg maar) dan gebruik je void als resultaat-type (er is immers geen resultaat-waarde). Methodes kunnen parameters meekrijgen. Dit hoeft echter niet en in zo'n geval gebruik je ook void als parameter-type (m.a.w. geen parameter). Nogmaals; het lijkt me handiger dat je gewoon een tutorial for dummies (geen belediging ;)) zoekt, want je zal vast nog wel meer van dit soort beginnersvragen krijgen, denk ik. Je hebt dan ook gelijk wat simpele voorbeelden tot je beschikking. Ff zoeken met Google dus.
Link naar reactie
[code:1:b15e3f437e] #include <stdio.h> void main() { printf("Hello World"); } [/code:1:b15e3f437e] Zo, een voorbeeld :P De methode main() geeft GEEN waarde terug (het beeldt alleen "Hello World" af op het scherm), vandaar het gebruik van void. Maar als je even de tijd neemt om op Google te zoeken naar "beginners tutorial" oid, dan moet je wel wat vinden. Het web ligt bezaait met dat soort tutorials.
Link naar reactie
sorry, maar die site doet t niet.... 1) maar wat is het nu dan precies van die void, want hierbij merk je niets dat hij geen waarde teruggeeft... 2) ik krijg een 'foutmelding' (hij doet t wel maar dan nog) [code:1:d0abf45eb6]warning: return type of 'main' is not 'int'[/code:1:d0abf45eb6] maar daar kan ik gewoon over heen kijken toch, want hij waarschuwt alleen dat het geen int is.. Greetz
Link naar reactie
[quote:a1474a95a8="redrum"]sorry, maar die site doet t niet.... 1) maar wat is het nu dan precies van die void, want hierbij merk je niets dat hij geen waarde teruggeeft... 2) ik krijg een 'foutmelding' (hij doet t wel maar dan nog) [code:1:a1474a95a8]warning: return type of 'main' is not 'int'[/code:1:a1474a95a8] maar daar kan ik gewoon over heen kijken toch, want hij waarschuwt alleen dat het geen int is..[/quote:a1474a95a8] Theoretisch zou main nu [i:a1474a95a8]garbage[/i:a1474a95a8] aan de caller kunnen teruggeven. Wellicht dat C(++) daar standaard 0 van maakt. (of toch niet? anders zou je geen warning krijgen.) [quote:a1474a95a8="bosjvd"] Void betekent eigenlijk leegte. Oftewel de variable die een functie terug kan geven is leeg/geen waarde.[/quote:a1474a95a8] [i:a1474a95a8]Leeg[/i:a1474a95a8] is volgens mij niet hetzelfde als [i:a1474a95a8]geen waarde[/i:a1474a95a8] Kijk maar naar NULL als pointer of het gebruik hiervan in SQL queries. void wil zeggen: "geen waarde". Dus geen waarde als input/output. M.a.w. geen (extra) waarden op de stack danwel registers zetten/ophalen.
Link naar reactie
dus als ik het goed begrijp doet void hetvolgdende int test(void) { printf("De test waarde is 15"); } Hij geeft wel de "De test waarde is 15" weer maar hij slaat ze niet op zal ik maar zeggen... maar je hebt 2 verschillende 'soorten' void: namelijk die tussen de haakjes -int test(void)- en die voor de haakjes -void test()- wat is daar het verschil van? Greetz (sorry dat ik het zo wil weten, maar ja als je ergens mee begint moet je het wel goed doen natuurlijk)
Link naar reactie
Nee, in jouw voorbeeld kun je geen parameters aan de functie test meegeven. Je zou bijvoorbeeld de volgende test functie kunnen maken: void test(int waarde) { printf("De test waarde is %i", waarde) } Als je nu de functie als volgt aanroept in de programma code: test(15) dan wordt er "De test waarde is 15" afgebeeld. Void geeft nu aan dat de functie geen waarde teruggeeft aan het programma zelf. Jouw voorbeeld zorgt ervoor dat de functie niet aangeroepen kan worden met test(15). Het programma accepteert namelijk geen parameters, vanwege de void in 'int test(void)'. In dit geval heeft de int ook geen zin want de functie geeft geen waarde terug aan het programma (geen return waarde).
Link naar reactie
[quote:2ff1569230="w.roosenburg"]Als je de "void" snapt, zal jij mij nu dit uit kunnen leggen: [code:1:2ff1569230] void (*(*f[])())() [/code:1:2ff1569230] :D[/quote:2ff1569230] Ik durf te beweren dat ik deze eerder ben tegengekomen... Oke dan. We gebruiken de [url=http://forum.computertotaal.nl/phpBB2/search.php]zoekfunctie[/url]. en typen in [color=red:2ff1569230](*(*f[])())()[/color:2ff1569230] [code:1:2ff1569230] Could not obtain topic ids DEBUG MODE SQL Error : 2013 Lost connection to MySQL server during query SELECT p.topic_id FROM phpbb_posts p, phpbb_forums f WHERE p.post_id IN (27402, 27469, 27482, 27483, 27492, 27533, 27564, 27578, 27583, 27609, 27733, 27770, 27772, 27812, 27831, 27852, 27913, 28004, 28006, 28008, 28072, 28076, 28165, 28167, 28344, 28352, 28363, 28372, ... 536170, 536275, 537343, 537562, 539114, 539124, 539863, 540129, 540154, 541040, 542168, 542182, 542183, 542749, 544529, 545464, 546818, 547383, 546872, 547135, 547175, 547378, 547388) AND f.forum_id = p.forum_id AND f.forum_id NOT IN (18) GROUP BY p.topic_id Line : 463 File : /webdocs/phpbb.computertotaal.nl/public_html/phpBB2/search.php [/code:1:2ff1569230] Hij heeft zeker moeite met de pointer naar een array van functions, etc. :)
Link naar reactie
Ipv die void kan je een type returnvariable weergeven bijv int Functie (int); { return .... } de funtie heeft dus een int als invoer en er komt ook een int uit dmv die return. Als daar void staat returnt hij niets, en wordt er dus geen waarde terug gegeven je kan die functie later gebruiken als iGetal = Functie (iAndergetal); je gebruikt iAndergetal als invoer, en de uitvoer van die functie wordt in iGetal gepropt. grtz
Link naar reactie
  • 6 maanden later...
[quote:f0985dd5b8="w.roosenburg"]Als je de "void" snapt, zal jij mij nu dit uit kunnen leggen: [code:1:f0985dd5b8] void (*(*f[])())() [/code:1:f0985dd5b8] :D[/quote:f0985dd5b8] ik voel ff de neiging antwoord te geven Dit is een functiepointer naar een array van functiepointers. Om eerlijk te zijn zie ik niet in wat je er nou precies aan hebt, je hebt bijv. meer aan: void (*f[])((*)()) of void (*f)((*n[])()) een array naar functies die een functie als argument nemen, of een functie die een array van functies als argument neemt. De code die je gaf is waarschijnlijk puur omdat niemand 'm zou begrijpen :P
Link naar reactie
CODE1[code:1:1699ed9401]void naam() { } [/code:1:1699ed9401] CODE2[code:1:1699ed9401]int naam() { } [/code:1:1699ed9401] Verschil: code1 is hetzelfde als een PROCEDURE, je kan er parameters aan toevoegen (naam(int x,int x)) maar hij retourneert geen waarde. Het is dus een stukje code dat iets doet en zich verder nergens mee kan bemoeien. Je kan void naam() dus gebruiken als je bijvoorbeeld heel vaak dezelfde handeling meot uitvoeren (copyright onderaan elk scherm van je programma, ik noem maar iets) bij een function (int naam()) wordt een waarde geretourneerd. Zo kan je bijvoorbeeld een functie maken die controleert of een passwd goed is. Retourneert die functie een 0 dan is het een fout paasword, retourneert hij een 1 dan wordt je doorgestuurd naar het beveiligde gedeelte van het programma. Snap je het nu? [quote:1699ed9401] ...Een functie doet in principe hetzelfde als een procedure. Er is echter wel een verschil. In een functie kan een berekening worden uitgevoerd, waarna de functie de waarde van de uitkomst van die berekening krijgt. Kort gezegd: een procedure voert alleen een bepaalde taak uit en een functie geeft bovendien een waarde terug.... [/quote:1699ed9401] (is van een andere taal, maar je kan void zien als een procedure(aanduiding) en int als functie(aanduiding))
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

×
×
  • Nieuwe aanmaken...