1 van 1

[c] wat is het verschil tss deze twee declaraties?

Geplaatst: di 29 nov 2011, 13:55
door Bert F
wat is het verschil tussen volgende declaratie in c?

char * new_karakter;

en:

char new_karakter[1];

is er een verschil? in mijn programma geeft het eerste een null pointer exception (denk ik) het tweede niet.

Groeten.

Re: [c] wat is het verschil tss deze twee declaraties?

Geplaatst: di 29 nov 2011, 14:15
door EvilBro
wat is het verschil tussen volgende declaratie in c?
De tweede declaratie reserveert een geheugenadres waar je een karakter in op kan slaan. De eerste declaratie doet dat niet.

Overigens compileren beide declaratie. Je doet dus kennelijk later iets wat niet mag. Dat is alleen niet te controleren aangezien je dat gedeelte van je code niet geeft.

Re: [c] wat is het verschil tss deze twee declaraties?

Geplaatst: di 29 nov 2011, 14:52
door Bert F
stukje code waar het fout loopt:

getsUSBUSART(new_karakter,1);

dus neem 1 karakter en steek die in new_karakter
De tweede declaratie reserveert een geheugenadres waar je een karakter in op kan slaan. De eerste declaratie doet dat niet.
maar reserveer je er niet op zijn minste 1?

Re: [c] wat is het verschil tss deze twee declaraties?

Geplaatst: di 29 nov 2011, 15:19
door 317070
maar reserveer je er niet op zijn minste 1?
Neen, je maakt enkel een pointer aan. Wat zou er anders gebeuren als je het volgende zou doen?

char* new_karakter = &echt_karakter;

Dan zou je volgens jou een plaats gereserveerd hebben voor een nieuw karakter en die nooit gebruiken. Dat zou verspilling zijn, dus je initialiseert echt enkel maar wat geheugenruimte voor die pointer.

Trouwens, beter geen talen door elkaar halen. ;) new_karakter zou ik niet graag tegenkomen als variabele.