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.