Inhoudsopgave:
Video: Math can help uncover cancer's secrets | Irina Kareva 2024
Soms moet in C-programmering een variabele zijn zoals mobiele telefonie: overal beschikbaar. De variabele kan ook op elk moment door elke functie worden gebruikt. Dit type variabele kan een universele variabele worden genoemd. Het zou een wereldwijde variabele kunnen worden genoemd. Maar in C wordt dit een globale variabele genoemd.
Globale variabelen gebruiken
Globale variabelen lossen specifieke problemen op door de variabele declaratie universeel te maken. Op die manier heeft elke willekeurige functie in het programma toegang tot de variabele. Het hoeft niet te worden doorgegeven of geretourneerd door een functie.
Tossing Your Age Around laat zien hoe een globale variabele wordt gedeclareerd en gebruikt. De globale variabelen leeftijd en zwevend worden beïnvloed door beide functies. Ze kunnen aan die functies worden doorgegeven, maar beide waarden kunnen niet worden geretourneerd. (C-functies retourneren slechts één waarde.) Daarom wordt de globale variabele gebruikt als een oplossing.
MET UW LEEFTIJD RONDOM
#omvat de ongeldige helft (ongeldig); ongeldig tweemaal (ongeldig); int leeftijd; drijfvoeten; int main () {printf ("Hoe oud ben je:"); scanf ("% d", & leeftijd); printf ("How tall are you (in feet):"); scanf ("% f", & feet); printf ("U bent% d jaar oud en%. 1 voet lang. n", leeftijd, voet); voor de helft(); tweemaal(); printf ("Maar je bent niet echt% d jaar oud of%. 1 voet lang. n", leeftijd, voeten); return (0);} void half (leeg) {float a, h; a = (float) leeftijd / 2. 0; printf ("De helft van uw leeftijd is%. 1f. n", a); h = feet / 2. 0; printf ("De helft van je lengte is%. 1f. n", h);} void twice (void) {age * = 2; printf ("Twice your age is% d. n", age); feet * = 2; printf ("Twice your height is%. 1fn", feet);}
Lijn 6 verklaart de globale int-variabele leeftijd en de float-variabele feet . Dit zijn globale variabelen omdat ze buiten elke functie worden verklaard, daarboven in #include, #define en prototyping land. De variabelen worden vervolgens in elke functie gebruikt. Hun waarden zijn overal in de code toegankelijk. Zelfs als die waarden worden gewijzigd in de functie double (), gebruikt de functie main () de nieuwe waarden.
Houd er rekening mee dat twee printf () -instructies in de functie main () hun tekst omsluiten in Tossing Your Age Around. U hoeft deze instructies niet in een teksteditor in te pakken; typ ze gewoon allemaal op één regel in.
Oefening 1 : Typ de broncode voor Tossing Your Age Around in je editor en maak een nieuw programma. Bouw en ren.
Wees niet lui over het gebruik van globale variabelen! Als u een waarde aan een functie kunt doorgeven, doe dat dan! Het is gepast. Te veel indolente programmeurs verklaren al hun variabelen globaal om "het probleem op te lossen."Dat is slordig en ongepast.
Goede voorbeelden van globale variabelen zijn informatie die alle functies in het programma moeten kennen, zoals gebruikersinformatie of dat u online bent of dat tekst wordt weergegeven of verborgen. Overweeg in dat geval om deze variabelen in plaats daarvan globaal te maken.
Een globale structuurvariabele maken
Een beter voorbeeld van het gebruik van een globale variabele en een situatie waarin globale variabelen volledig noodzakelijk zijn, is wanneer een structuur aan een functie wordt doorgegeven. In dat geval moet u de structuur als globaal declareren, zodat alle functies toegang hebben tot variabelen van dat structuurtype.
Laat de enorme lengte van het doorgeven van een structuur aan een functie u niet intimideren! De meeste "echte" programma's die je uiteindelijk schrijft zullen veel langer zijn!
STRUCTUUR OVERBRENGEN NAAR EEN FUNCTIE
# include # include # include #define SIZE 5 struct bot {int xpos; int ypos;}; struct bot initialize (struct bot b); int main () {struct bot robots [SIZE]; int x; srandom ((unsigned) tijd (NULL)); for (x = 0; xom een structuur door te geven aan een functie, moet de structuur globaal worden gedeclareerd, wat gebeurt tussen regels 7 en 10. Dat moet nog gebeuren voordat de functie wordt geprototypeerd, wat plaatsvindt op regel 12.
De initialize () -functie loopt van regels 30 tot en met 41. De structuur wordt doorgegeven aan de functie en geretourneerd.Let op dat de structuurvariabele volledig moet worden gedefinieerd als het argument.Op regel 30 wordt de variabele de naam van de variabele gegeven b binnen de functie.
De return-opdracht op regel 40 geeft de structuur terug naar de aanroepende functie. De initialize () -functie is inderdaad gedefinieerd als een structuurbotertype van functie. value it returns.
Oefening 2 : Schroef je moed in op de knelpunten en typ al die regels broncode van het doorgeven van een structuur naar een functie in je editor. Build and run.
De uitvoer toont hoe de structuurarray werd doorgegeven (één element tegelijk) aan een functie, aangepast in de func en vervolgens geretourneerd.