![]() |
[C] NULL en int
hier kwam ik niet uit, dus ff ee nsimpele vraag: kan je een int ook de waarde NULL geven?
Offtopic: btw, ik had eerst "[C] NULL" als topicname, maar dat pikt dit forum niet, worden lowercase... das nogal irri |
Tip: probeer het uit. Compileert ie, dan kan het.
|
Het is mogelijk.
|
als het goed is compileert hij wel jah maar wat wil je ermee bereiken? hij zet gewoon de waarde 0 erin dan, waarom tiep je niet gewoon int i = 0.. of wil je daarmee aangeven dat er geen waarde beschikbaar is zoals een NULL in een database.. dan werkt het niet omdat je de waarde 0 wil kunnen opslaan zonder dat het "geen waarde" betekent... dan moet je een pointer naar een int maken en die laten wijzen naar een int of NULL in de pointer zetten alsie leeg is... in dat geval is gewoon een boolean erbij om te kijken of hij vol is handiger :)
|
Als het goed is slikt je compiler "int i = NULL" niet, maar met een cast kan het wel. Zie het nut compleet niet maargoed, en bovendien is het semantisch compleet onjuist. In bijvoorbeeld Java hoef je dat niet te proberen.
|
ff kijken, wat wou ik ook al weer?
*zoek* owja, ik heb een array van ints en die hoeft niet helemaal vol te zitten, en een element uit die array moet ook de waarde 0 kunnen hebben. dus wou ik de laatste+1 element de waarde NULL geven. maar dat werkt dus niet. ik doe het wel met -1. |
Ah, op die manier. Nee, arrays van ints (en dat soort dingen) kunnen alleen integer waarden hebben. De 'NULL' in C is gewoon een macro voor 0, en ook in C++ zou 'null' toewijzen gewoon resulteren in een 0 in de array.
|
NULL == 0 het woord NULL is in bepaalde headers gewoon gedefineerd als 0. En omdat je gewoon int i= 0 kan doen, kan je ook int i=NULL. Of zit ik er nu helemaal naast :p
|
Citaat:
|
Citaat:
|
Citaat:
|
Citaat:
Je mag er niet vanuit gaan dat een NULL pointer naar een geldig stuk geheugen wijst. Je mag er niet vanuit gaan dat NULL een true (boolean) is. Je mag er niet vanuit gaan dat NULL een 0 (integer) is. etc... |
Citaat:
|
Citaat:
Een NULL-waarde is niks, onbekend, niet gedefinieerd. NULL is alles en NULL is niets. je mag er niet vanuit gaan dat bool(NULL) false teruggeeft Citaat:
Citaat:
Over het algemeen zal deze inderdaad naar 0 wijzen, maar dit is niet 'per definitie' |
Citaat:
Iemand kan een compiler/platform bedenken waarbij NULL naar geheugenadres -1 of 2^32 wijst, alles kan, aangezien dat juist een aspect is wat niet gedefinieerd is. |
dus om te testen of een pointer ergens naar wijst bijvoorbeeld in een linked list schrijven jullie allebei if (pNextNode != null) in plaats van if (pNextNode)?? :confused:
ik heb weinig code gezien waar ze dat zo doen in ieder geval dus ik ben zeker niet de enige die dat doet... maargoed ik begrijp het nu ook wel van die abstractie alleen ik zie een null pointer altijd gewoon als een pointer zonder waarde, en niet als een pointer met een onbekende waarde (zoals in SQL) dus test ik er ook op |
Citaat:
|
Alle tijden zijn GMT +1. Het is nu 18:13. |
Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.