Grunnleggende om C Identifier Scope C Guider fra Roots - Del 19 Innledning Dette er del 19 av min serie, C Guider fra Roots. I denne delen av serien ser vi på det som kalles identifikator omfang. En blokk er et sett av utsagn vedlagt i klammeparentes, som er {og}. Spørsmålet her er: hvis en identifikator er erklært utenfor en blokk vil det bli sett i blokken? På den annen side, hvis det er erklært inne i blokken, vil det sees utenfor blokken? Blokker ikke forekommer tilfeldig i kode. Det er visse konstruksjoner som har blokker.
Følgende konstruksjoner har blokker: hvis du for, og funksjon. Vi har sett alle disse konstruksjonene. For resten av denne opplæringen, ser vi på den hvis du for og funksjons konstruerer og hvordan identifikator omfang påføres dem. Merk: Hvis du ikke kan se koden, eller hvis du tror noe mangler (ødelagt kobling, bilde fraværende), bare kontakte meg på [email protected]. Det er, kontakt meg for den minste problemet du har om hva du leser.
If Construct og Identifier Scope Les og prøv følgende kode: #include int main () {int Myint = 40; if (25 == 25) {printf ("% i", Myint); int herInt = 50; } //Printf ("% i", herInt); returnere 0; } If tilstanden er hvis 25 er lik 25. Nå er denne tilstanden vil alltid returnere true, og så hvis blokken vil alltid bli henrettet. Utenfor if-blokken, er identifikatoren, Myint deklarert og tildelt verdien, 40. Inne i if-blokken er det en uttalelse for å skrive ut Myint. Denne identifikatoren ble erklært utenfor hvis block; hvis det er sett inne i blokken, vil det bli skrevet ut.
Hvis du prøvde koden du ville ha lagt merke til at verdien av Myint ble skrevet ut. Nå inne i blokken, ble en ny identifikator, herInt erklært og hadde en verdi tildelt. Utenfor blokken, er en kommentar. Denne kommentaren er faktisk en uttalelse innledes med kommentaren denotation, //. På grunn av dette fortegn, er uttalelsen ikke utført. Hvis du fjerner kommentar denotation og re-prøve koden, vil følgende forklaring følger: Den herInt identifikator er erklært inne i if-blokken. Nå, hvis det er sett utenfor blokken, da den "siste" statement (uten kommentaren betegnelse) ville skrive sin verdi.
Fjern //symbol og prøve koden hvis du ikke allerede har gjort det, og merk at den siste utskrifts uttalelsen ikke ville fungere, og du vil få en feilmelding eller feilmeldinger ved kompilering. Funksjons Construct og Identifier Scope Den følgende kode har blitt skrevet i likhet med de ovennevnte, men funksjonen er utenfor hovedfunks