Hjem Personlig finansiering Slik kontrollerer du en variabelplassering i C Programmering - dummier

Slik kontrollerer du en variabelplassering i C Programmering - dummier

Video: Writing 2D Games in C using SDL by Thomas Lively 2024

Video: Writing 2D Games in C using SDL by Thomas Lively 2024
Anonim

I C programmering blir en variabels type og størrelse avdekket først ved å erklære den variabelen som en spesifikk type, men også ved å bruke størrelsen på søkeordet. Den andre beskrivelsen av en variabel, dens innhold, kan hentes ved å lese variabelenes verdi ved hjelp av den aktuelle C-språkfunksjonen.

Den tredje beskrivelsen av en variabel er plasseringen i minnet. Du samler denne informasjonen ved hjelp av & operatøren og% p plassholderen, som vist i O Variabel, hvorfor er du?

O VARIABEL, DERFOR KUNNE DU?

#include int main () {char c = 'c'; int i = 123; flyte f = 98. 6; dobbelt d = 6 022E23; printf ("Adresse på 'c'% pn ', & c); printf ("Adresse på 'i'% pn ', & i); printf ("Adresse på" f '% pn ", & f); printf ("Adresse på" d '% pn ", & d); returnere (0);}

Når & operatøren prefikserer en variabel, returnerer den en verdi som representerer variabelen adresse, eller plasseringen i minnet. Den verdien er uttrykt i heksadesimale. For å se verdien, brukes konverteringstegnet% p, som vist i O Variabel, hvorfor er du?

Øvelse 1 : Skriv kildekoden fra O Variabel, hvorfor er du? inn i redaktøren din. Bygg og løp.

Resultatene som er produsert av programmet generert fra øvelse 1, er unike, ikke bare for hver datamaskin, men også potensielt for hver gang programmet kjøres.

Adresse til 'c' 0x7fff5fbff8ff Adresse til 'i' 0x7fff5fbff8f8 Adresse til 'f' 0x7fff5fbff8f4 Adresse til 'd' 0x7fff5fbff8e8

Variabel c er lagret i minnet på stedet 0x7fff5fbff8ff - det er desimalplassering 140, 734, 799, 804, 671. Begge verdier er trivielle, selvfølgelig; datamaskinen holder oversikt over minnesteder, noe som bare er bra for meg.

Denne illustrasjonen viser hvordan adressene kartlegges i minnet.

Individuelle arrayelementer har også minneposisjoner, som vist i Memory Locations i en Array on Line 10. Operatøren prefixerer den spesifikke elementvariabelen, hoster opp en adresse. Konverteringspersonen% p i funksjonen printf () viser adressen.

MEMORY LOCATIONS I EN ARRAY

#include int main () {char hei [] = "Hei!"; int i = 0; mens (hei [i]) {printf ("% c på% pn", hei [i], og hei [i]); i ++;} retur (0);}

Øvelse 2 : Opprett et nytt prosjekt ved å bruke kildekoden som vises i minnesteder i et array. Bygg og løp.

Igjen er minneplasseringsutgang unikt på hver datamaskin.

H ved 0x7fff5fbff8f0 e ved 0x7fff5fbff8f1 l ved 0x7fff5fbff8f2 l ved 0x7fff5fbff8f3 o ved 0x7fff5fbff8f4!på 0x7fff5fbff8f5

I motsetning til eksemplet fra øvelse 1, er adressene generert av øvelse 2 sammenhengende i minnet, en byte etter den andre.

Øvelse 3 : Kode et program for å vise fem verdier i en int array sammen med hvert elements minneadresse. Du kan bruke Memory Locations i et array for å inspirere deg, selv om en for loop kan være enklere å kode.

  • Forresten skal operatøren for & minneplassen være kjent for deg. Den brukes av scanf () -funksjonen, som krever en variables adresse, ikke selve variabelen. Det er fordi scanf () plasserer en verdi direkte på en minnested. Hvordan? Ved å bruke pekere, selvfølgelig!

  • Operatøren er også bitwise AND operatøren; kompilatoren er imidlertid smart nok til å fortelle når og prefikserer en variabel og når og er en del av en binær matematikkligning.

Slik kontrollerer du en variabelplassering i C Programmering - dummier

Redaktørens valg

Speil Lockup (MUP) på Nikon D7100-dummies

Speil Lockup (MUP) på Nikon D7100-dummies

En komponent i det optiske systemet til din Nikon D7100 kamera er et speil som beveger seg hver gang du trykker på lukkerknappen. Den lille vibrasjonen som følge av speilets handling kan føre til svak utryddelse av bildet når du bruker en veldig langsom lukkerhastighet, skyter med en lang teleobjektiv, ...

Opptaksmuligheter på Nikon D5300 - dummies

Opptaksmuligheter på Nikon D5300 - dummies

Du kan styre noen få aspekter av din filmoppgave på din Nikon D5300. Du kan manipulere videoen din for å skape en rekke effekter. Følgende liste går gjennom disse alternativene: Eksponeringsmodus: Du kan ta opp filmer i hvilken som helst eksponeringsmodus (Auto, Scenemodus, Effektmodus, P, M, og så videre). Som med fortsatt ...

Hvordan man manipulerer eksponering og kontroll på Nikon D5600-dummies

Hvordan man manipulerer eksponering og kontroll på Nikon D5600-dummies

Følgende retusjonsverktøy på din Nikon D5600 kamerajustering eksponering og farge: D-Lighting, Quick Retouch, Filter Effects og Monochrome. Selv om disse verktøyene ikke får deg til å velge ett kamera over en annen, hvis du allerede har en Nikon D5600, er de tilgjengelige, så du kan også lære å bruke dem! D-Lighting: Active D-Lighting ...

Redaktørens valg

DOs og DON'Ts of Fantasy Basketball Draft Picks - dummies

DOs og DON'Ts of Fantasy Basketball Draft Picks - dummies

Hvis du vurderer bli med i en fantasy basketball liga, må du ta hensyn til følgende DOs og DON'Ts før du vurderer spillerne du vil utarbeide på laget ditt. Kreditt: © iStockphoto. com / IS_ImageSource Fantasy basketball draft pick DOS I de fleste fantasy basketball ligaer bestemmer kommisjonen (personen som setter opp ligaen) bestillingen i ...

Linjene og dimensjonene til en basketballbane - dummies

Linjene og dimensjonene til en basketballbane - dummies

En basketballbane har symmetri; Den ene halvdelen av retten er et speilbilde av den andre. Hele basketballbanen (se figur 1) er 94 fot med 50 fot. På hver halvplass viser malte linjer fritt korsbanen og sirkelen, samt trepunktsbuen, hvis avstand fra kurven varierer basert ...

Kjøp av gratis agenter i fantasy fotball - dummies

Kjøp av gratis agenter i fantasy fotball - dummies

I løpet av fantasy fotball sesongen, spillere som ikke blir utarbeidet bli gratis agenter - spillere tilgjengelig for enhver ligamatch villig til å slippe en eid spiller. Bruk gratis agentbassenget til å erstatte en skadet spiller eller noen som bare ikke lever opp til dine forventninger. Bruk disse tipsene for å finne en gratis agent for å ...

Redaktørens valg

Grunnleggende for din iOS-app - dummies

Grunnleggende for din iOS-app - dummies

Heldigvis mesteparten av det du trenger å gjøre så langt som iOS animasjon er opptatt er allerede bygd inn i rammen. Noen visningsegenskaper kan animeres, noe som betyr at du bare må fortelle visningen hvor du skal begynne og hvor du skal avslutte flyttingen, og noen få andre valgfrie parametere, og du er ferdig. ...

Montering av verktøylinjen for Android App Development - dummies

Montering av verktøylinjen for Android App Development - dummies

Når du vet at du er klar til være en Android-utvikler, ta tak i datamaskinen din og få sprekker på å installere verktøyene og rammene som er nødvendige for å bygge ditt første blockbuster-program. Linux-kjernen Android ble opprettet på toppen av åpen kildekode Linux-kjernen. Android-teamet valgte å bruke denne kjernen fordi den ga bevist ...

Grunnleggende om Cocoa Touch i iOS Apps - dummies

Grunnleggende om Cocoa Touch i iOS Apps - dummies

Cocoa Touch-laget inneholder det meste av objektet -orientert utvikler-vendt rammer for å bygge iOS applikasjoner. Det er ditt eneste utgangspunkt for app-utvikling. Apple-guiderne oppfordrer deg til å undersøke teknologiene i dette laget for å se om de oppfyller dine behov, før du ser på de andre lagene. Med andre ord, Apple har til hensikt å ...