Bună ziua și bun venit, avem o altă provocare pentru dvs. în această provocare.
Vreau să afli totul despre aritmetica pointerială.
Amintiți-vă aritmetica pointer este un concept foarte curat.
Este un concept notational, dar incercati sa ilustreze cu adevarat modul in care arrays sunt legate de pointeri puteti traversa o matrice foarte usor, cu
o sintaxa foarte simpla, care va reduce linia de cod si este concept foarte curat, astfel incat
sa obtii totul despre aritmetica pointer Raso a ajuns la aflați mai
multe despre modificatorul constant.
Prin urmare, în această provocare vreau să scrieți un program care testează înțelegerea aritmeticii pointerului
și a modificatorului Konst.
Am învățat atât despre aceste două concepte cât și despre prelegerile anterioare.
Vreau să scrie o funcție care calculează lungimea șirului.
Cerințele sunt funcția ar trebui să ia ca parametru un pointer constant de caractere un punct constant sau
înseamnă că nu puteți schimba valoarea a ceea ce indicatorul indică și nu veți face acest lucru
cu lungimea pe care funcția nu o poate determina decât lungimea șirului folosind aritmetica pointerului.
Nu vreau să folosiți funcția sterlină.
Vreau să folosesc aritmetica pointerului și modul în care văd că această funcție
trebuie pusă în aplicare este că veți obține adresa sfârșitului indicatorului OK care ar fi lungimea indicatorului
în esență.
Dar modul în care poți obține adresa ultimului șir în pointer este că poți scrie o buclă
în timp ce bucla în timp poate merge până la caracterul terminator nul.
Dreapta.
Sau caracterul multi-monitor amintesc că reprezintă o furnică.
Deci terminatorul nul este de fapt zero.
Deci, puteți scrie o buclă în timp și toată buclă în timp ce trebuie să includeți în starea sa este dereferencing pointer,
deoarece în cazul în care valoarea de pointer dereferenced este 0.
Săriți din bucla.
Și asta ar fi Terminatorul.
Deci, vreau ca tu să treci prin întreaga pointeră și atunci când o primești în timp ce
treci prin ea păstrează o păstra pe păstrarea sau echiparea acel pointer.
Deci, acum aveți un pointer care indică sfârșitul șirului, apoi pentru a calcula efectiv lungimea.
Tot ce trebuie sa faci este minus doua pointeri.
Pointerul care a fost trecut în care este începutul șirului și apoi indicatorul pe care l-ați creat în funcția
care indică sfârșitul șirului dacă minus sfârșitul indicatorului de șir de la începutul punctului de
coardă pe care l- Voi avea lungimea șirului.
Deci vei face pointer aritmetic prin incrementarea pointerului unul cate unul pentru a ajunge
la adresa de sfarsit si apoi vei folosi pointer aritmetic pentru a multiplica sa scada fiecare pointer.
Aceasta este probabil cea mai valabilă modalitate de a utiliza aritmetica pointerului pentru scădere.
De obicei, nu adăugați doi indicatori deoarece de ce ați adăuga două adrese, puteți scădea două adrese
pentru a obține.
Cât de departe sunt două elemente într-o matrice care ar avea sens adăugând una acum.
Deci, doar pentru a reitera funcția poate determina doar lungimea șirului folosind aritmetica pointer.
Creați un pointer local în funcția dvs. incrementați acel pointer de fiecare dată pentru a ajunge la final până când ați
spus terminator nul.
Simplu lollop.
Apoi, odată ce ați terminat adresa aveți deja adresa de început.
Extrageți acești doi indicatori care vă vor da lungimea pe care ar trebui să o returnați ca
o int din funcție.
Și apoi puteți tipări singură lungimea reală.
Deci, această sarcină vă face să vă familiarizați cu aritmetica pointerului și, de asemenea,
cum să utilizați modificatorul constant, deoarece nu doriți să modificați valoarea reală la care se îndreaptă.
Și scăderea a două pointeri, de asemenea, și folosind o buclă în timp unde puteți
privi valoarea pointerilor în sine pentru a determina caracterul nul.
Mult noroc voi oferi o soluție în următoarea conferință.
Mulțumesc.