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

Moderators: jkien, Xilvo

Reageer
Berichten: 2.589

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

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.

Berichten: 7.068

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

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.

Berichten: 2.589

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

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?

Gebruikersavatar
Berichten: 5.609

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

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.
What it all comes down to, is that I haven't got it all figured out just yet

And I've got one hand in my pocket and the other one is giving the peace sign

-Alanis Morisette-

Reageer