Bună ziua și bun venit și această prelegere pe o demonstrație furnizată pentru o
provocare anterioară care te-a făcut să înțelegi cum să alocăm dinamic din memorie folosind Mallick, vom face doar
câteva citiri simple de la tastatură și apoi vom afișa un șir dar suntem mergând să-l
folosească cu pointeri de caractere aliniate dinamic.
Deci, haideți să deschidem blocuri de coduri pentru a crea un nou proiect și vom numi doar acest exemplu de alocare dinamică a memoriei și primul lucru pe care
trebuie să-l faceți
atunci când intenționați să utilizați alocarea dinamică a memoriei este că trebuie să vă asigurați
că sunteți " inclusiv standard lib.
Din fericire, atunci când creați un proiect în blocuri de cod, acesta este automat inclus pentru dvs.
Dar motivul pentru care trebuie să includem standardul lib este că Mallick funcția malloc este
acolo și Mallik aminteste este principala funcție de alocare a memoriei.
Aveți, de asemenea, Alec CLX cu adevărat important, deoarece Alec va face o parte din calculul frumos a numărului de
octeți de care aveți nevoie deoarece sunt doi parametri.
Dar adevăratul lucru bun despre Alak este că inițializează toate datele la zero, dacă acestea sunt ints și așa mai departe.
Într-adevăr o funcție frumoasă ai re Alec.
Alec va extinde memoria care a fost deja alocată, astfel încât să o trimiteți într-un pointer din acel pointer determină
cât este de mult alocată pentru ea și copiază tot ce era acolo într-o nouă locație de
memorie și apoi specificați și câți alți octeți doriți a aloca.
Doar adăugați-o în noua locație de memorie.
Foarte frumos, dar amintiți-vă că atunci când alocați memorie pentru numere întregi folosind Mallik, trebuie să determinați cât
de multă memorie doriți să alocați octeți, dar de obicei doriți să utilizați dimensiunea
corectă a OPERATORULUI.
Deci, hai să ajungem la asta în principala mea metodă.
Am de gând să creez un număr întreg și voi spune doar că va fi o mărime.
Utilizatorul va introduce dimensiunea numărului de octeți pe care doresc să le aloce în timpul execuției.
Deci asta va stoca marimea.
Celălalt lucru pe care vreau să-l creez este că vreau să creez un pointer
de caractere, iar acest lucru va fi impozitat și voi începe inițializarea tuturor, pentru că nu indică nimic de pe liliac.
Acum, primul lucru pe care vreau sa il fac este sa imi solicit utilizatorului sa intre in dimensiune.
Deci, atunci când spun print f, am de gând să spun Introduceți limita textului și ei vor introduce un număr pentru câte octeți vor
să fie alocați cu adevărat numărul de caractere.
Și apoi o să citesc asta prin utilizarea scanării cu moartea iscan a primului parametru este tipul de specificator
de format pentru tipul de date va fi procentaj pentru că eu citesc într-un întreg și apoi îmi
amintesc de scanare ia un pointer.
Acum știm că funcțiile care iau indicii au nevoie de o adresă care să treacă.
Deci, dacă sunt la o trecere și mărimea dimensiunii nu este o adresă decât dacă folosesc adresa operatorului, unii
folosesc ampersand și am ajuns să spun dimensiunea care va citi și numărul de octeți.
Odată ce am numărul de octeți, acum pot aloca memorie pentru el folosind funcția Mallik și
Mallik va reveni la un pointer vid și indicatorul va fi prima adresă pentru memoria recent
alocată.
Deci, puteți să-i alocați dreptul la text deoarece amintesc textul este un pointer.
Vrem să trimitem text la această nouă adresă, fiind returnată deoarece malloc returnează un pointer vid.
Trebuie să o arunci.
Tipul de date spre care îndreptăm sunt caracterele pe care dorim să le vedem.
Dreapta.
Și apoi putem apela funcția Mallik funcția Mallik ia un număr de octeți.
Corect, deci numărul de octeți.
Dacă tocmai ați trecut în numărul de octeți, va fi alocat doar acei mulți octeți, în
funcție de tipul de date, tipul de date.
Poate două sau patru octeți.
Deci, dacă doriți să alocați 10 caractere pe care doriți să vă asigurați că veți înmulți 10 caractere
de dimensiunea caracterelor.
Deci, acum vom spune orele de sfârșit ale dimensiunii de operatori folosiți adesea în funcția Mallik, deoarece
este independentă de mașină și vă va spune cât de mult trebuie să alocați.
Acum, acest lucru este mai relevant atunci când aveți numere întregi amintesc întregi în funcție de sistemul pe care sunteți
pe și arhitectura pe care o utilizați este de utilizare pot fi reprezentate de 4 bytes la octeți
de obicei 2 sau 4 octeți.
Dacă vrei să spui că vreau să stochez un număr întreg.
Deci, voi crea doar 4 octeți de memorie.
Ei bine, este posibil ca acestea să nu fie corecte deoarece sunt 2 octeți.
Deci, întotdeauna doriți să faceți câte numere întregi sau câte caractere doriți să le creați și apoi
să le multiplicați prin mărimea caracterului din sistemul dvs., dimensiunea operatorului vă va da
numărul de octeți care o ocupă.
Deci, dacă doriți să creați 10 caractere zicem de 10 ori mărimea caracterelor dacă doriți să creați 10 numere
întregi sau 10 încurajatori, spuneți de 10 ori mărimea acesteia, care este cu adevărat importantă.
Acum, cu funcția C Alik nu trebuie să faci asta. Alak
are de fapt doi parametri, iar primul parametru este indicatorul.
Și apoi al doilea parametru este dimensiunea octetului.
Deci, dacă spui 24 inci, tot ce faci e că trebuie să treci în 24 de ore și să aloce automat
pentru tine.
Deci, CLX este un instrument foarte frumos de utilizat, deoarece nu trebuie să faceți această multiplicare.
Deci, pentru Alec, primul parametru este dimensiunea.
Deci, dacă ați dori să creați chirie ar trece doar 10 și apoi al doilea parametru dimensiunea
byte.
Deci nu trebuie să faceți multiplicarea.
Te salvează puțin.
Acum că am alocat memoria pe care doriți să vă asigurați că textul nu o cunoaște înainte de a încerca să faceți text
de dereferență.
Deci, întotdeauna doriți să înfășurați acest lucru în jurul unui text și nu veți spune că nu este vorba doar de ceea ce puteți face
în mod explicit și de a spune dacă textul nu este egal cu nr.
Întotdeauna vrei să faci asta pentru că e foarte periculos să încerci să dereferenți un pointer pe care îl ai.
Orice s-ar putea întâmpla că ai putea să scrii date în ea, o să-l scrieți
altundeva în memorie, așa că ți-ar șterge programul sau ai o defecțiune în segmentare
și programul s-ar putea prăbuși, dar atâta timp cât vei aloca cu adevărat memoria pe care o puteți citi acum
în unele date.
Puteți folosi fundul sau puteți scana aici, dar ceea ce doriți să faceți este să doriți să
imprimați știți că
introduceți un text și de asemenea, dorim să adăugați picioarele de linie aici pentru
a fi ușor de citit și veți scana din moment ce cu asta suntem familiarizati si Scaff este doar de citit si de procente de fapt va voi arata un truc pe care
il voi scana dupa ce am citit urmatorul personaj asa ca pauze si apoi o sa
folosesc sa ne aducem la citiți în text și să vă întrebați este doar o altă funcție.
De obicei, puteți utiliza alfabetul așa cum trebuie doar să setați setul de la fluxul de intrare, dar veți fi întrebat
va citi de la fluxul de intrare standard, care în mod implicit este tastatura și este întrebat este de
gând să ia un pointer.
Deci trebuie să facem să trecem și să scriem text cu motiv că este deja un punct pe care nu
dorim să-l punem în adresa operatorului.
Și chestia frumoasă cu întrebarea este că puteți citi în mai multe șiruri separate prin spații.
Odată ce am citit și am obŃinut, putem să-l tipărim astfel încât să putem spune textul importat dacă
importatul este un cuvânt procentual ca un backslash și apoi textul virgul de text ca un pointer Pranav are un pointer nu trebuie să
îl dereferenŃăm.
Acest lucru vă va oferi,
de fapt, că v-ați dorit să vă referiți.
Îmi pare rău pentru asta.
Deoarece, dacă afișați doar text, textul va afișa valoarea indicelui care va fi
o adresă.
De fapt, dorim să afișăm valoarea textului care indică spre dreapta și apoi am terminat corect.
Nu, cu siguranță nu suntem terminați.
Vrem să ne sunăm pe cei liberi.
Vrem să eliberăm pointerul nostru chiar dacă, atunci când acceptăm memoria, va fi liberă, noi încă mai dorim să
ne asigurăm că îl eliberăm și apoi, de asemenea, probabil că dorim doar să păstrăm în
siguranță că vrem să setăm un text egal cu a ne cunoaște pe cineva să ne construiască și vezi ce se întâmplă.
Și am o problemă pentru că nu citesc în variabila potrivită și este nedeclarată Deci, aici nu folosesc
variabila potrivită.
Vreau să folosesc
mărimea și
se pare că suntem buni.
Deci, aici mergem.
Singura diferență aici este că nu trebuie să dereferezi textul deoarece textul este un indicator al caracterului.
Trebuie doar să o dereferenți în pointer și așa mai departe.
Deci, poți doar atunci când folosești precizia pe care o știe automat referința la
pointerul caracterului.
Aceasta este o diferență atunci când utilizați indicatori de caractere față de alte indicii.
Ceilalți indicatori trebuie să dereferențiați pentru a obține valoarea, pentru că nu puteți copia corzile în șir de caractere și
așa mai departe.
Niciodată nu ai putea să faci un text de stea egal.
Va trebui să utilizați întotdeauna copia stea dacă doriți să copiați textul, deoarece vă puteți
aminti din prelegerile pe care le puteți atribui într-adevăr date unui tablou, iar un pointer de caractere este un matrice, astfel încât acest aspect pare corect.
Nu există nici un motiv să o dereferențezi.
Vrem să construim acest lucru și apoi vrem să îl executăm și veți observa că am pus limita Taxilului spunând
că am pus în cinci șase pentru Jason și un prinț de intrare este Jason și puteți juca în jurul cu acest program,
dar din nou takeaways de la aceasta includ standard lib.
Când faci indicatorul Mallik drept inițializator este punctul tău de caracter este.
Faceți o scanare dacă utilizați ampersand deoarece mărimea nu este un pointer când mouse-ul faceți clic pe Maliki
malloc returnează un pointer gol, deci trebuie să aruncați.
Întotdeauna doriți ca în interiorul Mallik să faceți dimensiunea operatorului pentru ceea ce doriți să alocați de patru
ori câte caractere reale sunt sau numere întregi sunt mai mult până la numere întregi și tipuri de date primitive pentru
caracterele pe care le puteți folosi doar pentru a mări.
Întotdeauna vrei să verifici dacă știi.
Asigurați-vă că nu este nul atunci când mergeți să utilizați un șir de caractere și apoi introduceți
doar un text stocat în GetS și tipăriți-l.
Și apoi, nu în ultimul rând, întotdeauna ne dorim întotdeauna să ne eliberăm indicii, astfel încât să putem da asta înapoi la morman.
Sper că acest lucru se rezolvă.
Mulțumesc.