Mitä eroa int * p: n ja int p *: n ja int * p: n välillä on?


Paras vastaus

No, mikään ei ole:

int p*;

Se on virheellinen käsky. Saat tämän koodin kääntövirheen.

Toisaalta int * p ja int * p ovat periaatteessa samat. Se ei ole mitään muuta kuin tyyli. C / C ++ -kääntäjällä ei ole väliä kirjoitatko int * p vai int * p. Jos siis haluat liittää * -tyypin muuttujan sijasta, tee se vapaasti.

Mutta yksi tärkeä huomioitava asia:

Seuraava lausunto luo yhden kaksi kokonaislukuosoitinta:

int* a,b;

Täällä b ilmoitetaan kokonaislukuna, missä a on kokonaislukuosoitin. Tämä lause:

int *a,*b;

julistaa sekä a että b kokonaislukuviitteiksi.

Vastaa

Int p *: ei ole vielä nähty Int * p: kuten tässä * on liitetty p: hen, niin vain p on osoitin kokonaislukulle. jos ilmoitat toisen muuttujan p: n jälkeen puolipisteellä erotettuna, se ei tule olemaan osoitin. Eli. int * p, q. Tässä p on osoitin kokonaislukuun, mutta q on normaali int-muuttuja eikä osoitin.

Tapaus Int * p, q toimii samalla tavalla kuin Int * p, q. Molemmat ilmoitukset ilmoittavat p: n kokonaislukuna ja q: n normaalina kokonaislukuna. Int * p, q on eräänlainen ilmoitus, joka hämmentää ohjelmoijia.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *