Bună ziua și bun venit în această lecție
Vreau să furnizez o demonstrație a provocării noastre cu pointer
aritmetică și folosind costul de modificator primăvară blocuri de cod și de a crea un nou proiect pe care vom numi acest exemplu aritmetică un pointer.
OK, deci ceea ce vom face aici este că vom determina de fapt lungimea unui
șir folosind aritmetica pointerială.
Deci, primul lucru pe care vrei să-l faci este să-mi creez declarația de funcționare.
Aceasta va returna lungimea șirului, astfel încât va avea un int ca un tip de retur când se
va apela o lungime de șir.
Și asta va lua doar un indicator, dar va fi un indicator constant pe care nu
vrem să schimbăm valoarea a ceea ce ne îndreaptă.
Asta înseamnă că vom folosi Consta ca primul cuvânt cheie și apoi vom specifica tipul care este un
personaj și am spune o stea și o putem numi ceea ce vrem.
Şir.
Acum, din nou, doar pentru a reitera dacă am pune această constantă aici, ar spune
că adresa pointerului valoarea pointerului nu se poate schimba.
Dar din nou este un fel de redundanță și nu trebuie într-adevăr să fie făcut pentru că facem
trecerea prin valoare trecută prin copiere.
Deci aveți o copie a adresei oricum, astfel încât nu contează dacă o schimbați acolo, dar este
important să schimbați ceea ce vă îndreptați dacă nu doriți ca valoarea la care vă îndreptați să se schimbe.
Cu siguranta vrei sa faci constanta aici si asta e important.
Deci, acum tot ce trebuie să facem este că vom crea principala noastră principală sau
o vom face în principalele noastre, pe măsură ce vom numi funcția de lungime a șirului de șir cu diferite șiruri.
Deci, să ne rugăm acum și să ne aducem aminte că întoarce energia, astfel încât să putem spune procentul D și vom încerca să tipărească
lungimea câtorva șiruri de caractere pe care le trecem.
Deci, vreau să apelez lungimea șirului și doar vom trece în niște șiruri constante, astfel încât să putem pune doar lucrurile
în ghilimele duble aici.
Nici macar nu trebuie sa cream pointeri.
Puteți crea un pointer și îl puteți atribui și apoi îl puteți transfera.
Dar trebuie doar să vă asigurați că este o constantă.
Dar din moment ce este mai ușor și mai puțin cod, putem spune doar testul lungimii șirului.
Din nou, acesta este un șir constant de literă.
Vom încerca cu mai multe, vom spune să punem un spațiu după el.
De fapt, să lăsăm aici câteva linii de alimentare să reamintească lungimea șirului și, de fapt, să sunăm cu sirul
gol gol.
Asigurați-vă că returnați 0.
Apoi al treilea va spune lungimea șirului.
Vom spune doar Jason.
Acum, întâmplător, atunci când creați acestea, treceți la lungimea șirului de coarde, acestea primesc în mod automat terminatorul null
adăugat la ele.
Dreapta.
Învățăm asta atunci când declarăm indicații.
Acesta este unul dintre avantajele dacă veți crea un pointer și va fi un literal.
Nu doriți să specificați dimensiunea pe care o știți că doriți să faceți ceva de genul personajului.
Dacă este o matrice deoarece o matrice este o creștere a unui pointer.
Dar dacă vrem să specificăm mărimea putem spune caracterul P și apoi înăuntru
aici putem spune Jason bine.
Amintiți-vă că lecția în cazul în care, dacă nu specificăm dimensiunea x pentru creșterea caracterului, va adăuga
automat un terminator nul și va crea dimensiunea pentru dvs.
În acest fel, nu faceți nici o greșeală dacă puneți dimensiunea în interiorul matricei.
S-ar putea să nu aveți destui terminator nul.
Același lucru se întâmplă atunci când treceți literalul în agitator termenul nul sau se
adaugă la sfârșitul acestuia.
Așadar, am putea să creăm aceste variabile pe care le cunoașteți și să le facem sincer și să facem ceva de genul acesta și apoi
să trecem în fiecare dintre ele.
Dar nu am vrut să pierd timpul generând variabile.
Așa că o să fac asta.
Acum, ceea ce este cu adevărat important pentru acest cod este funcția.
Așa că vom crea lungimea șirului.
Amintiți-vă din nou că returnează un număr întreg și va fi o constantă.
Așa că putem spune povestea constantă a caracterelor Star.
De asemenea, observați că numele variabilei declarației funcției nu trebuie să se potrivească.
Aș putea pune acest lucru în șiruri de caractere și asta este bine, de asemenea.
Acum, în interiorul acestei funcții trebuie să creăm un pointer local, deoarece indicatorul local va indica
sfârșitul șirului și apoi, odată ce vom avea adresa pentru sfârșitul șirului, putem minus adresa pentru
începutul șirului adresa de început a unui șir este ceea ce a trecut în șir
este vorba toate magice pentru a indica primul element din matrice sau prima
adresă a matrice.
Deci, dacă vom crea un pointer local și vom dori doar să creăm din nou o altă
stea constantă și vom spune ultima bara de adrese.
Și aceasta va fi egală cu adresa de început a șirului și apoi vom crește
de fiecare dată în bucla noastră.
Deci acum avem ultimul adder din nou, aceasta este o variabilă locală care va
stoca adresa exact înaintea terminatorului nul.
Deci, acum putem scrie bucla noastră în timp ce bucla noastră în timp ce mergem la X când vedem terminatorul nul.
Acum am putea face asta astăzi pentru că am putea să spunem că putem compara personajele astfel încât să putem spune
ceva asemănător.
În timp ce ultima adresa Star, deoarece trebuie să dereferențiată, nu este egală cu
întoarcerea înapoi 0.
Ar putea face așa ceva.
Dar asta e un fel de cod.
Tot ce trebuie să facem este doar să spunem în timp ce adresa stea este ultima, pentru că dacă dereferenți un terminator nul, poate
fi egal cu zero și zero este egal cu dreptul fals.
Știm că booleenii au 1 false false false.
Deci, dacă e falsă, o să sară.
Tot ce trebuie să faceți este să vă aflați în interiorul condiției în care stați ultima adresă.
Din nou, aceasta va dereferența indicatorul și odată ce va indica ultima adresă pe care
o va îndrepta către terminatorul nul.
Acum trebuie să ne asigurăm că modificăm ultima adresă, astfel încât în ​​cele din urmă să puncteze terminatorul nul.
Tot ce putem face este că putem spune plus plus ultima adresă.
Deci, fiecare iterație a bucla în timp se va incrementa adresa până când se vede că un zero zero reprezintă
terminatorul nul.
Deci, rezultatul final al acestei proceduri în timp ce este realizat executarea ultimei
adrese va fi îndreptată spre adresa terminatorului nul.
Putem apoi să scăpăm adresa terminatorului nul de la adresa care a fost transmisă în șirul nostru și
asta ne va da lungimea.
Deci asta e tot ce trebuie să facem în linia următoare.
Putem spune că a reluat ultima noastră adresă și de fapt, dorim să scădem adresa, astfel încât să nu avem nevoie
să dereferențăm nimic sau să folosim ultima șir de adresă a operatorului de indirecție.
Deci, șirul este trecut prin faptul că nu îl modificăm deloc, indicând primul caracter care va indica spre
J.
Aceasta ar fi adresa sau pentru prima dată când sunăm linia 8.
Aceasta ar fi adresa ultimei adrese care urmează să indice adresa
ultimului T.
De fapt, unul mai mult decât terminatorul nul.
Dacă spunem ultima adresă minus ca adresa de fund, ne va da lungimea și asta este
ceea ce vom reveni.
Așadar, sper că are sens din nou pe linia 17 recrutarea unei variabile locale deoarece trebuie
să ținem evidența ultimei adrese a adresei terminatorului nul.
După ce această buclă este terminată, ultima adresă se va afișa după T terminatorul nul.
Apoi, putem scădea doar ultima adresă din șirul pe care adresa șirurilor îi indică la s este când vine și
nu modificăm acest lucru.
Deci, să vedem ce anume.
Dacă aceasta dă înapoi la lungimea corectă atunci când executăm acest lucru, ar trebui să vedem lungimea pentru
acele șiruri de caractere în care am trecut.
Deci vedem 17 0 și 5 să vedem ca 1 2 3 4 5 6 7 8 9 10 11 12 13 trebuie să numeri spațiul 14 15 16
17.
Asta e corect.
Am pus în citate două cuvinte care sunt goale.
Deci ar trebui să fie zero.
Și apoi Jason ar trebui să fie 5 ani.
Deci 17 0 pe 5.
Este corect.
Deci, ce am făcut aici a fost că am folosit aritmetica pointerului pentru a obține ultima adresă plus plus operatorul incrementării
și apoi aritmetica pointerului pentru a obține lungimea cu minus ultima adresă minus un șir.
Destul de curat.
Încearcă să încerce să demonstreze puterea aritmetică a pointerului, confortul notației și modul în care
puteți să-l incrementați cu ușurință pentru a obține diferitele locuri dintr-o gamă de caractere și pentru a scoate caracterele.
În acest caz, primim doar adresele și apoi folosim adresele până la minus
fiecare pentru a obține lungimea.
Deci, sper că acest lucru a fost de ajutor și sper să vă asigurați că ați înțeles tot ce am menționat.
Din nou, conceptul unei constante a conceptului de plus plus conceptul de condiție dacă dereference o adresă
și care indică un alternator este zero.
Așa că sare și apoi acest concept al meu lipsește două adrese.
Mulțumesc.