Bună ziua și bun venit înapoi și această prelegere vreau să vorbesc despre definirea pointerilor, în principal,
sintaxa pentru declararea unui porter și apoi folosind adresa operatorului pentru a atribui o adresă de memorie unui pointer.
Așadar până în acest moment ar fi trebuit să ne-am forțat pe cap că un pointer nu este altceva decât
o variabilă care indică o adresă de memorie sau conține o valoare de memorie ca valoare.
Deci, declarând un pointer.
Nu este același lucru cu crearea unui pointer normal.
În regulă, puteți face ceva ca un pointer pointer.
Aceasta nu este modalitatea de a declara un pointer.
Sintaxa este ușor diferită.
Utilizați un asterisc.
Deci nu este suficient să spunem că o variabilă este un pointer.
De asemenea, trebuie să specificați tipul de variabilă la care indicatorul indicatorului
indică faptul că diferite tipuri de variabile ocupă diferite valori ale spațiului de stocare.
Este chiar foarte bine când specificați tipul de date atunci când creați o variabilă a unui tip de date
indicatorul.
De asemenea, specificați tipul de date.
Puteți declara un pointer la o variabilă de tip int făcând următoarele.
Numărul de asterisc stele star care vă va spune că este un indicator.
Se pare același lucru, dar după care este asteriscul, asteriscul înseamnă un pointer și
apoi specificați tipul de pointer în sine.
Acesta este un pointer int, tipul variabilei cu numerele P din stea.
Poate stoca adresa oricarei variabile de tip int numere de adrese de adrese.
Deci, dacă doriți să stocați adresa unei alte variabile, variabila trebuie definită ca
un tip întreg.
Deci, aici pi este indicat la furnică la o variabilă variabilă char stele PC care este pointer la un caracter variabil fluxul star
star P. F. star PGE.
Acestea sunt indicii pentru a curge verbale.
Așa definiți.
Tipurile contează.
Spațiul dintre asterisc și numele indicatorului este opțional.
Nu trebuie să puneți un spațiu acolo.
Nu puteți avea spațiu.
Ce se întâmplă și vom vorbi despre dereferențierea unei variabile, de obicei folosiți
un spațiu în declarație și atunci când dereferențiați nu o utilizați.
Deci, toate aceste declarații ar trebui să conțină un spațiu prin convenție.
Valoarea unui pointer este o adresă, așa că trebuie să fie reprezentată intern ca o non-signing pentru a
atrage majoritatea sistemelor.
Deci magazinul trebuie să păstreze ceva.
Se întâmplă așa că stochează un număr hexazecimal și chiar dacă îl stochează pe măsură ce arată ca un
număr întreg.
Nu vă gândiți la asta ca la întregul tip, aceleași lucruri pe care le puteți face cu orice edgers
pe care nu le puteți face cu indicii și invers.
Deci, dacă știți dacă încercați să imprimați, va arăta ca un număr sau un număr hexazecimal.
Nu înseamnă că o poți trata ca un întreg.
Puteți multiplica un număr întreg cu altul, de exemplu, dar nu puteți multiplica un indicator de către un alt
identificator într-adevăr un tip nou.
Nu este un tip întreg.
Procentul p reprezintă formatul specificat pentru indicatori.
Voi trece prin afișarea diferitelor date pentru un indicator și vom vedea cum este folosit.
Declarațiile anterioare creează variabila, dar nu există nicio inițializare acolo unde nu există nici o
atribuire.
Întotdeauna doriți să atribuiți o valoare unui indicator.
Este foarte periculoasă dacă nu inițializați acest lucru, așa că doriți să inițializați un
pointer atunci când îl declarați dacă nu știți ce să-l inițializați dacă nu este adresa unui alt variabil sau nu ați
alocat dinamic memoria pentru.
Puteți utiliza un pointer nul, astfel încât să puteți inițializa un pointer astfel încât să nu indice nimic.
Faceți asta folosind NULL.
Spui ca in numarul stoppie egal nu pentru un pointer la un int.
NULL este o constantă care este definită de biblioteca standard.
Este echivalentul unui zero pentru un pointer.
Aceasta înseamnă că nu indică nimic.
Este garantat să nu se indice nici o locație de memorie, deci acest lucru este bun.
Vreți să faceți acest lucru pentru că ceea ce înseamnă înseamnă că veți
face greșeli făcând accidental depășirea tamponului sau scrierea în memorie pe care nu ar trebui să o scrieți inițializându-l.
Acest lucru limitează, de fapt, greșelile pe care le puteți face.
Am vorbit despre NULL mai demult, am vorbit despre caracterul nul.
Acest concept este diferit de pointerul nul Gnome pointer înseamnă că nu indică nimic și
ar trebui să fie inițializate cu asta.
Trebuie să adăugați o directivă de includere pentru standard def that age dacă
doriți să utilizați definiția nulă aici adresa operatorului dacă doriți să atribuiți indicatorul dvs. la ceva adresa pe
care o puteți utiliza adresa operatorului unei variabile existente.
Deci, dacă doriți să vă inițializați variabila cu ADD sau cu o anumită variabilă pe care ați afirmat
deja că ați utilizat adresa operatorului ampersand.
Am văzut acest lucru când am discutat despre funcția de scanare aici, când semnează o variabilă a valorii întregului.
Nouăzeci și nouă.
Creăm un pointer de tip și îi atribuim adresa numărului.
Putem face acest lucru deoarece numărul este o furnică în pointerul pe care l-am creat.
De asemenea, indică un int.
Deci tot ce trebuie să facem după ce asignarea egală este egală cu operatorul este folosirea ampersandului.
Și acum numărul va conține adresa numărului, valoarea inițială a numărului este
adresa numărului de variabilă.
Declarația numerelor trebuie să fie precedată de declarația indicatorului care stochează adresa, deoarece
nu poți aloca la un pointer ceva care nu are alocat memorie.
Dacă încercați să atribuiți numărul numărului de pointer nu există, dacă nu îl faceți, pentru a
atribui o adresă unui indicator care trebuie să aibă alocat memoria pentru acesta.
În caz contrar, compilatorul se va plânge.
Fiți atent, totuși, deoarece nu este nimic deosebit cu privire la declararea unui pointer.
Puteți declara variabile regulate în pointeri și aceeași instrucțiune.
Deci, ai putea spune dublu valoare p valoare.
F Nr.
Apoi, această afirmație aici.
Aceasta este doar a doua valoare p variabilă ca un pointer.
Celelalte două sunt doar duble.
E ceva mai explicit, mai puțin evident în declarația respectivă.
Dar dacă spui în steaua P Q.
Aceasta implică faptul că există ambele indicatori și nu există.
Avem doar un singur pointer aici, care este p variabila Q este doar tip int.
Este o greșeală obișnuită să credeți că ambii Pean sunt indicatori, așa că fiți atent atunci când declarați un
pointer pe multe variabile pe aceeași linie.
Este, de asemenea, o idee bună să folosiți nume care încep cu P ca nume de pointer.
Acest lucru vă va spune că acea variabilă este un indicator prin examinarea ei.
Deci, de obicei, faceți toate declarațiile de variabile în partea de sus a unui program
de obicei în interiorul funcției principale și dacă doriți să vă uitați la aceste variabile atunci când vedeți
acele variabile utilizate mai târziu în program, puteți identifica cu ușurință diferitele tipuri de date sau pointer diferit tipuri deoarece au
p ca prefix.
Deci, acest lexer tocmai a trecut peste modul în care puteți defini un pointer și apoi să atribuiți o adresă a
unei variabile existente unui pointer.
Acum există cazuri în care nu doriți ca S-League să aloce variabila existentă a indicatorului de valoare.
Poate doriți să alocați o memorie nouă.
Vom vorbi despre ele și despre prelegerea ulterioară.
Dar acum o vom păstra simplu.
Ne vom concentra pe folosirea indicatoarelor de tipul tipurilor ușoare, cum ar fi dublele sau flotoarele
și vom concentra să atribuim variabilelor existente adresa și să vedem cum funcționează.
Să mergem mai departe.
Mulțumesc.