Bună ziua și binevenită în această prelegere, vreau să vorbesc despre accesarea valorii pe care o indică un
indicator.
Așadar, amintiți indicatorii pe care îi puteți stoca adresele de memorie pe care adresa de memorie conține de fapt o
valoare a unor undeva.
Și așa indicii indică acea adresă de memorie.
Vreau să obțin valoarea a ceea ce merită.
Pentru că dacă aș imprima valoarea unui pointer care ar fi o adresă, dar vreau
să obțin adresa pe care o doresc să primesc valoarea adresei.
Deci, puteți accesa valoarea unei adrese în punctul în care doriți să utilizați operatorul de indirecție,
operatorul de indirecție este asteriscul.
Deci, învățăm cum să folosim asteriscul pentru a declara un indicator.
De asemenea, vom folosi asteriscul pentru a găsi valoarea la care indică un indicator.
Deci, este, de asemenea, numit operatorul de dereference deoarece îl folosiți pentru a dereferența un pointer.
De exemplu, dacă aveți un număr egal cu 15, ați declarat pointer de tip
și indicați o furnică și îi alocați adresa numărului utilizând ampersandul.
Acum, cum obțineți valoarea a ceea ce arată indicii spre dreapta.
Poți să-l dereferezi.
În esență, ceea ce indică valoarea indicelui indică valorile 15 drept pentru că este
indicat la adresa numărului care este de 15.
Deci, variabila pointer conține adresa numărului de variabilă.
Puteți utiliza aceasta într-o expresie pentru a calcula noua valoare a rezultatului.
Așa că am vrut să facem.
Rezultatul este egal cu valoarea pe care punctul indică plus la cinci.
Utilizați asterisc-ul chiar înainte de numele indicatorului.
Și ceea ce ar face acest lucru este că ar spune în principiu ce este variabila pointer indicând faptul că
arată 15.
Adăugați 5 la ea.
Este adresa pe care indicatorul indică la valoarea adresei.
Deci, asteriscul operator indirection pe care ar fi trebuit sa-l observati este si simbolul folosit pentru multiplicare si este de asemenea folosit
atunci cand declarati tipurile de pointer drept, astfel incat acest lucru poate fi foarte confuz.
De unde știți ce se întâmplă sau cum funcționează compilatorul?
Ei bine, este vorba despre context.
Depinde de momentul în care îl folosiți ca piesă și de unde o utilizați.
Dacă utilizați asteriscul atunci când declarați un pointer imediat după tipul indicatorului, atunci evident se
utilizează o declarație.
Dacă utilizați asteriscul între două numere, atunci este folosit pentru înmulțire și dacă este folosit chiar în
fața indicelui indicelui de pe partea dreaptă, de exemplu, sau în partea stângă, va fi
atribuirea unei valori sau accesarea unei valori.
Deci este vorba despre context.
Când utilizați aceste operatori de indirecție OK.
Și așa funcționează.
Deci așa compilatorul o va interpreta.
Ori de câte ori vedeți în acest exemplu Star POINAR și nu aveți un tip de date înainte de a nu
avea două numere pe fiecare parte, atunci știți că este un pointer de interacțiune.
Dereferencing.
Prin urmare, să trecem printr-un exemplu.
Iată un exemplu în care vom crea un număr întreg de 10, unde putem crea un număr întreg
de tip numit X ..
O altă variabilă pe care inițiem numărătoarea la 10 x este inițializată la nimic.
Apoi, creăm un pointer pe care știm că este un punct final sau pentru că avem
asteriscul după tipul de date și apoi l-am denumit în pointer.
Acum vom aloca pointerului adresa de contorizare deoarece amintesc că indicii conțin
doar adrese ca valori.
Dar ele indică și ceva.
Deci, putem atribui variabila x indiferent în indicii care indică la ce valoare este
adresa care este conținută în pointer.
Deci, X va afișa de fapt 10.
Deci, dacă vom merge mai departe și vom arăta că același număr de procente D I D x procente deja numărate ca egal cu 10
X va fi egal cu 10.
Acesta este modul în care puteți dereferența un pointer și obțineți valoarea pe care o indică.
Dacă doriți să afișați valorile indicatorului deoarece amintesc că un indicator are o valoare în memorie.
Este doar o adresă.
Deci, dacă doriți să afișați valoarea indicatorilor care reprezintă reprezentată de un număr întreg accidental sau
de o adresă.
Ei bine, puteți utiliza formularul ca primele 5% p am vorbit despre asta înainte.
Toate acestea vor pune o valoare de pointer ca o adresă de memorie în formă hexazecimală.
Deci, dacă am face ceva de genul ăsta în care ne declarăm numărul, declarăm un pointer, îl inițializăm la nici o cauză
care este o bună practică.
Vrem să facem întotdeauna acest lucru ori de câte ori nu alocați ceva
într-o declarație în acest punct sau asigurați-vă că ați inițializat-o la Nu, atunci atribuim variabila numărului
nostru 10 și apoi ne semnează indicatorul nostru la adresa numărului, astfel încât valoarea numărul va fi de fapt o adresă.
Deci, dacă am încerca să tipărim, vom folosi procentul și asta ar
fi valoarea adresei dacă vrem să tipărim ceea ce indică.
Va trebui să o dereferențăm folosind operatorul de indirecție.
Dar când imprimați adresa pe care o face, este imprimată hexazecimal și pointeri copia
e octeți în memorie și adresele au 16 16 cifre hexazecimale.
Deci, cum funcționează asta.
Depinde de faptul dacă aparatul dvs. suportă adrese de 64 biți sau 32 de biți.
Dacă mașina dvs. are sistem de operare pe 64 de biți, veți vedea 16 cifre hexazecimale.
Dacă mașina dvs. sau clasa dvs. are doar 32 outracing, atunci veți vedea hexazecimale
reprezentate ca cifre hexazecimale.
Ce se întâmplă dacă doriți să afișați o adresă corectă și puteți spune bine ce este diferența.
Doar pentru că indicatorul are o valoare.
Drept dar puteți afișa și adresa cu adresa operatorului.
Deci, în acest exemplu dorim să afișăm adresa numerelor de cifre, nu un număr de pointer drept este doar
un număr întreg.
Dacă vrem să obținem adresa pe care o folosim ampersand-ul.
Dacă vrem să afișăm adresa adăugată din nou, folosiți din nou procentul.
Aplicați doar ampersandul.
Dreapta.
Deci, dacă vom furniza ampersand cu variabila indicator, ar fi afișat adresa
acelui pointer, nu valoarea indicatoarelor. Amintiți-vă că adresa pointerului este o
memorie Anderson, valoarea indicelui este o adresă pe care o indică și valoarea pe care o are arătând că este
undeva în memorie.
Așadar, amintiți-vă că ilustrația în care am arătat am arătat cum arată pointerii un indicator.
Când declarați că creează memorie pentru acel pointer octeți valoarea acelui pointer este o adresă și atunci indiferent de indicatorul care
indică este o valoare de obicei de tipul pe care îl oferiți.
Dar amintiți-vă că există trei părți.
Dacă doriți să imprimați adresa de numere veți folosi din nou ampersand.
Aceasta ar fi adresa indicatorului propriu-zis și va trebui să folosiți steaua goală pentru a obține
un avertisment.
Așadar amintiți-vă că numitorul însuși are o adresă la fel ca orice altă variabilă.
Se distribuie atunci când declarați că utilizează procentul p ca specificator de conversie pentru afișarea adreselor.
Utilizați ampersand adresa operatorului pentru a face referire la adresa pe care variabila număr ocupă.
Asta e adresa indicatorului.
Apoi, pointerul are o valoare a unei adrese.
Distribuția void este de a preveni un avertisment de la compilator în mod specific caietul de sarcini procentuale
se așteaptă ca valoarea să fie un fel de tip pointer, dar tipul de ampersand număr este un pointer
la un pointer de Int.
Și astfel
trebuie să o aruncați afișând numărul de octeți un pointer folosește un alt mod de a obține informații despre un pointer.
Aici puteți utiliza dimensiunea operatorului pe care l-am învățat despre mărimea dimensiunii sau pentru a afișa
diferite tipuri de octeți de date pe care le puteți face același lucru cu un pointer pe o mașină pe care o rulez.
Acest lucru va ocupa opt octeți în adresa mașinii are 64 de biți deoarece este un sistem de operare pe 64 de biți
și puteți obține un avertisment compilator atunci când utilizați dimensiunea acestui mod dimensionat este un tip de
implementare definit pentru a preveni avertizarea pe care ați putea arunca argumentul într-o scrieți așa.
Deci, ceea ce ați face este că ați spune numărul dimensiunea procentului D bytes și ați spune că
a aruncat asta la o mărime int a numărului care vă va oferi dimensiunea indicatorului în dimensiunea memoriei un indicator al acelei adrese care
din nou este 8 octeți pe majoritatea sistemelor.
Pentru că asta conține doar un exemplu de adresă aici.
Aceasta va afișa o serie de lucruri și vom rula acest exemplu pentru a afișa rezultatul.
Dar chiar înainte să o conducem vreau să descriu puțin ce se întâmplă aici.
Avem un număr care a fost declarat.
Avem un pointer care a inițializat nulul.
Am stabilit valoarea numărului la 10.
Apoi, ceea ce dorim să facem este să imprimați adresa numărului întreg și
dorim să tipărim valoarea numărului.
Foarte simplu folosind adresa operatorului și apoi doar variabila.
Când facem adresa operatorului, facem un procentaj.
Apoi, vom aloca adresa numerelor la pointerul nostru, apoi vom tipări informații
despre POINAR.
Vrem să punem adresa pointerului în sine.
Putem pur și simplu să folosim numărul și numărul de pauză.
Vrem să vedem câți octeți are indicatorul în memorie.
Putem spune mărimea că dorim să vedem valoarea reală a indicatorului care este o adresă pe care o putem spune numărul fără
nici un fel de informații suplimentare și apoi vom folosi procentul p dacă vrem să vedem valoarea la care
indicatorul indică .
Valoarea adresei, atunci facem numărul stoppie.
Folosim operatorul de indirecție și știm că numărul de numere indică un
sfârșit, astfel încât putem spune procent D.
Deci, să aruncăm o privire asupra blocurilor de coduri de exemplu pentru a vedea cum este afișat.
Ce vom vedea sunt câteva numere hexazecimale pentru adrese Ori de câte ori
jucăm doar adresa și vom vedea valori în alte cazuri.
Deci, ar trebui să pară familiar.
Acesta este doar un program care vă arată cum să accesați diferite părți ale unui pointer.
Așadar, din nou avem un tip de date cu număr regulat și avem POINAR-ul nostru inițializat la null. Mai întâi vom afișa
numărul nostru care este de 10.
Deci, aceasta va afișa adresa numărului și apoi va afișa valoarea numărului pe
liniile 10 și 11.
Vom atribui POINAR-ului nostru adresa de număr pe care dorim să o vedem cu adresa reală a POINAR-ului nostru.
Folosim doar ampersand adresa operatorului si il aruncam pentru a evita stocarea.
Folosim procentul.
Vrem să vedem câți octeți indicii și memoria vom face procentul D de dimensiunea dorită pentru a vedea adresa
valoarea indicatorului pe care îl facem în procente.
Și spunem doar numărul, deoarece numărul este o adresă dacă vrem să vedem la ce indicatorul
indică.
Care a fost valoarea adresei care are valoarea pointerului.
Spunem doar asteriscul numărul pe care îl dereferențăm.
Operatorul de indirecție.
Așa că hai să conducem asta.
Când rulez acest lucru puteți vedea bult veți vedea primele două lucruri care sunt tipărite adresa
de numere care este pe linia 6 și că unele cifre hexazecimale 0 0 6 0 5 0 a se vedea.
Dreapta.
Și acesta este de fapt un program pe 32 de biți.
Așa că vezi că e doar 8 biți.
Apoi tipãm numãrul valorii variabilei numerice la 10.
Apoi imprimați adresa pointerului real în memoria alocată.
Este o adresă diferită de număr, deoarece aceasta este adresa alocată pentru pointer, dimensiunea numărului de pointer
este de 4 octeți.
Și asta înseamnă că 32 biți adresându-se valorii indicatorului care este adresa numărului ar trebui să fie
aceeași și este 0 0 6 0 0 vezi dreapta și vezi că poți obține adresa de număr prin simpla folosire a
numelui indicatorul cu procent .
Am văzut dimensiunea operatorului cu patru octeți.
Dacă doriți să obțineți valoarea că numerele care indică la care este de
10 trebuie să se refere la ea folosind interacțiunea OPERATOR Și veți vedea că este tipărit 10 Cs la sută
ori de câte ori se afișează utilizarea destinatarului procentul atunci când se afișează valori ale integer pointer sau numărul de octeți.
Aceasta este sintaxa de bază pentru accesarea valorilor indicatoarelor.
Adresați-vă o anumită valoare și valoarea indicelui că punctul indică doar numele variabilei.
Și astfel valoarea indicelui în sine este doar numele variabilei, apoi valoarea la care
indicatorul indică.
Utilizați operatorul de interacțiune.
Mulțumesc.
Sper că acest lucru vă ajută să studiați acest lucru.
Pornește prin asta.