Și bine ați venit în această prelegere dorim să oferim o demonstrație pentru provocarea noastră
anterioară, care a fost înțelegerea trecând prin referință având un parametru în interiorul unei funcții, luați un pointer.
Deci, să creăm un nou proiect.
Vom numi acest punct de referință prin referință, pentru că asta demonstrează.
Chestii de bază aici.
Noua aplicație a consolei de proiect este destul de simplă aici.
Să numim doar această subliniere POINAR trecută prin referință poate demonstra modul în care putem utiliza parametrii din interiorul unei funcții
pentru a transmite date și modul în care aceste date vor fi apoi modificate în afara funcției.
Deci, primul lucru pe care îl vom face este că vom crea declarația noastră funcțională sau prototipul funcției.
Acest lucru este întotdeauna frumos de făcut, astfel încât să puteți apela oriunde în programul dvs. vom numi doar un lucru principal
pătrat în această declarație de funcții este că va lua un pointer.
Deci, va lua un punct final sau așa vom spune doar în stea și apoi îi puteți
da orice nume doriți și veți termina cu un cod.
Și funcția noastră principală.
Mai întâi vom face este că vom crea o variabilă normală de energie și vom spune că
nu este.
Vom spune hardcoded în seara asta.
Și ceea ce vom face este că vom numi funcția noastră pătrată sau funcția
pătrată nu va reveni la niciunul dintre datele pe care le vom anula.
Trebuie să trecem la adresa acum, dar pentru că funcția noastră de împroșcare funcționează online pentru a lua un indicator.
Așadar, nu putem trece la dezarmare încât ar trebui să trecem de fapt în adresa GNOME și apoi vom termina
cu un seismic.
Așa că numim funcția folosind numele funcției și apoi transmitem adresa variabilei deoarece variabila
ADD aici în opt linii nu este un pointer.
Apoi, putem doar să imprimăm valoarea Naamului.
Și din nou ceea ce veți observa aici este faptul că treceți prin adresă dacă schimbați datele din funcția însăși
pentru acea variabilă pe care o vom schimba în afara acesteia.
Deci, aici vom spune că pătratul numărului dat este în care să spunem procentul D Am avut o linie de
alimentare.
Și noi doar vom pronunța Gnome și Gnome nu va fi frumos.
Îți spun foarte mult.
Și atunci vom reveni la 0 pentru forțele noastre regulate.
Acum trebuie să implementăm funcția pentru ao defini pentru ao defini.
Voi spune pur și simplu Piața.
Știm că este nevoie de un pointer întreg, atunci când se spune în stea x și acum vrem să ne multiplicăm singuri.
Dar vrem să ne asigurăm că nu schimbăm adresa.
Dreapta.
Așadar, ceea ce am putea face aici este că am putea face acest lucru constant, dar ați dori să puneți Consta după
tipul de date, deoarece nu vrem să schimbăm adresa a ceea ce X este valoarea a ce axe sunt.
Care este adresa la care se îndreaptă.
Așa că am putea spune că e constantă.
Dacă nu vrem să schimbăm valoarea lui x, atunci vom spune constant.
Dar vrem să schimbăm valoarea lui x o să o înlocuim singură.
Deci, pătrat de la sine.
În primul rând, ceea ce vrem să schimbăm este valoarea finală a lui x.
Așa că trebuie să folosim operatorul de indirecție pe care trebuie să îl dereferențăm cu asteriscul și
apoi vom spune că nu e nevoie să facem X de ori X pentru că asta va multiplica corect adresele.
X este un pointer.
Nu vrem să obținem valoarea lui x y și să obținem valoarea a ceea ce indică X.
Deci, din nou, trebuie să o dereferențăm și apoi o vom înmulți singură.
Vom face o referință de două ori.
Poate ar fi o idee bună să puneți acest lucru în paranteze doar așa că este foarte ușor de înțeles ce
se întâmplă aici dereferențiând pointerul obținând valoarea acestuia și apoi înmulțind-o cu valoarea sa.
Și apoi trebuie să-i spui lui Michael.
Asta e.
Asta e tot ce trebuie să faci.
Deci, atunci când executam acest program, se va imprima 81.
Va imprima valoarea normei.
Norma se va schimba în interiorul pătratului pentru că trecem adresa acolo.
De fapt, nu putem să ne schimbăm.
Punctul este valoare.
Deci avem acea constantă după tip.
Deci, aici spunem construi și se pare că nu am schimbat declarația sau am uitat de constanță.
Și acum vrem să ne asigurăm că totul este corect.
Am făcut o mică greșeală dacă vrei să ai constantă pointer pe care trebuie să o pui după asterisc.
Deci, în steluța care înseamnă în Star Consta înseamnă că nu poți schimba valoarea lui x care este adresa
lui Nome.
Dacă punem Konst în fața INT sau după intrarea înaintea asteriscului, înseamnă că nu
poți schimba valoarea indicelui indicelui.
Acum când conducem acest lucru ar trebui să vedem este de ieșire 81.
Și din nou ceea ce ne spune acest lucru este ceea ce facem.
Ceea ce ne spune este că am modificat datele pe care această variabilă a modificat această variabilă locală în interiorul
funcției și valoarea sa schimbată, ceea ce nu este normal nu am învățat acel concept până acum care
a trecut prin referință.
Dar în C ce se întâmplă, treci într-o copie a adresei.
De aceea este într-adevăr redundantă.
Nici nu avem nevoie de constanta deoarece, chiar daca am fi schimbat valoarea indicelui, este o copie
a valorii pointerilor.
Deci nu trebuie să faci asta.
Acum, dacă nu vrem să folosim un număr existent, putem crea un porno sau trebuie doar să alocăm
memorie pentru el.
Deci, ceea ce ar trebui să facem aici este că am putea crea un instalator.
Dar ceea ce ar trebui să facem este mai întâi că ar trebui să aruncăm
Mallik pentru că Mallik se întoarce cu un pointer gol, dar putem aloca dinamic dinamic și aici ar trebui să spunem cu
adevărat doar pentru că creăm un întreg am putea spune doar mărimea int și că ne-ar aloca memorie pentru
noi și atunci tot ce ar trebui să facem este să trecem în Gnome pătrat și atunci când vom construi acest lucru ar face același lucru.
Dar acum, de fapt, nu avem nici o valoare pentru gnome.
Deci, de fapt, nu ar ști ce să calculeze, deci ar trebui să alocați
de fapt valorii romanului aici pentru dereferențe.
Și atunci când o construiți și o rulați, ar trebui să obțineți 16.
Singurul lucru pe care îl avem aici este că vrem să tipărim valorile, așa că
vrem să spunem nu, iar atunci când o conducem ar trebui să vedem 16.
Și este într-adevăr același tip de comportament și vom vedea șaisprezece diferențe de punct aici am fost alocarea de
memorie pentru ceea ce punctul este îndreptat spre spre deosebire de a arăta doar la o
locație de memorie existent cu ampersand din nou născut lucruri pentru a ști aici acest număr se schimbă în afara
funcției.
Acesta este trecut prin referință.
Înțelegeți că folosim operatorul de dereferență pentru operatorul de indirecție pentru a obține valoarea a
ceea ce indică punctul.
O.K.
Înțelegeți că dacă funcția are un pointer și avem un indicator pe care nu îl avem,
putem trimite doar numele.
Dacă nu ia un indicator și este de fapt o valoare, atunci trebuie să o dereferențăm.
Și aceasta este exact ca scanarea f.
Deci, aici ar trebui să spunem ampersandul.
Și apoi, atunci când am tipărit, nu trebuia să dereference nimic, pentru că nu este un pointer.
Și atunci ar fi același lucru aici.
Și apoi înțelegeți Konst lui Konst înainte ca steaua să spună că valoarea pe care punctul în care se îndreaptă nu
se poate schimba.
Costul după stea spune că adresa pointerului nu poate modifica valoarea indicelui.
Sper că acest lucru a fost de ajutor.
Poți să joci cu această schimbare o mizerie de sintaxă ca și mine.
Vă va ajuta să învățați multe.
Mulțumesc.