Bună ziua și bun venit înapoi.
Acum că am înțeles indicii un pic mai detaliu vreau să vorbesc despre pointeri caracter, în principal modul în care
puteți utiliza pointeri caracter pentru a reprezenta șiruri de caractere.
Corzile sunt caractere de caractere cu mai multe caractere.
Așadar, acum știm cum se referă la matrice și indicatorul aritmetic al pointerului.
Concept foarte util.
Aceste concepte pot fi foarte utile atunci când sunt aplicate șirurilor de caractere, deoarece acum putem
traversa cu ușurință un caracter de caractere de caractere una dintre cele mai comune aplicații de a folosi un pointer într-o matrice este ca un
pointer la un șir de caractere.
Motivele sunt una de convenționalitate notații și eficiență, astfel încât folosind o variabilă de pointer de tip pentru
a char sau grija de a trimite un șir vă oferă o mulțime de flexibilitate.
Deci, veți încerca să utilizați indicatori de caractere la fel de mult pe cât puteți peste array-uri de
caractere folosind în mod specific pointeri de caractere pentru a transmite date către o funcție.
Tot felul de lucruri drăguțe de genul ăsta.
Așadar, haideți să examinăm exemplul care folosește un matrice pentru a copia un șir.
În acest exemplu, parametrul nostru de matrice va fi o matrice de caractere.
Veți vedea asta exact în declarația funcției.
Vreau să comparăm această funcție cu o funcție care are un pointer de caractere și vă arată cum funcția
pointerului de caractere este mult mai eficientă.
Deci, în acest exemplu, avem două funcții una care are o matrice și una care ia indicii și primul șir
de funcții de copiere.
Putem trece prin întreaga matrice și o buclă pentru care o sun pe 0 din Sabai și vom merge până când vom
vedea șirul de caractere nul.
Și atunci când creșteți sau variați variabila de control, atunci tot ce trebuie să faceți este să spuneți lui Sabai egal
din Sabai.
Facem o misiune directă acolo.
Și apoi, la sfârșitul sfârșitului, după ce am parcurs tot drumul într-un caracter nul, adăugăm un
caracter nul la sfârșitul celor două matrice destul de de bază.
Să vedem cum o facem atunci când folosim indicii.
Mai întâi declarăm două indicatoare ca declarație de funcții în șirul de copiere, spunând doar că începutul
de la char și sunt pentru o buclă.
Nu trebuie să declarăm vreo variabilă pentru că avem indicatori și dorim doar să repetăm ​​până
când rezultatul nu atinge terminatorul nul și apoi putem să creștem ambii indicatori și cei doi indicatori deoarece
aici facem corectă aritmetică indicatoare.
Adăugăm doar unul la pointerul care își mărește adresa cu unul care primește următorul personaj,
iar următorul pentru linia de buclă.
Am dereferenta doar atat pentru si de la pentru ca vrem sa atribuim valoarea reala
pe care pointerii o indreptatesc catre caracterul obisnuit atat celor doi pointeri si apoi la sfarsitul lui vom adauga caracterul nul ori oriunde
ar arata acel pointer la care ar fi la sfârșitul ultimei
adrese a șirului, pentru care ar fi indicat în cele două adrese.
Nu pare prea rău.
Vreau să spun că ai o buclă pentru că ai, în esență, aceeași cantitate de linii de cod, dar
vezi diferența în diferența în sintaxă.
Puteți vedea cum nu folosiți corect indiciile și că folosiți indicii.
Utilizați din nou asteriscul.
Într-adevăr o problemă de confort notații.
Nu vedeți un mare avantaj aici, pe care îl puteți optimiza cu atât mai mult pentru a
obține chiar și mai puțin cod pentru atunci când utilizați indicii.
Deci, dacă aveți o matrice de caractere ca un pointer dacă aveți o mulțime
de caractere de caractere de text, puteți defini similar un pointer la acesta și utilizați elementele din text.
Deci, aici am putea spune pointerul textului cu caractere.
Așa ați declarat că definiți un indicator al caracterelor.
Dacă indicatorul TX este setat indicând la începutul matricei de
caractere numite text, atunci ați putea crește doar cu una utilizând aceste incrementări Pre-N incrementare post și imitații Decker.
Deci, deasupra acestui plus plus taxa POINAR se va stabili punctul fiscal pentru a indica urmatorul
personaj din textul care este textul pe care cineva ne-ar dori sa-l privim in lumea urmatoare la fel ca pentru numere intregi.
Tot ce trebuie să facem este să adăugăm una la ea și putem obține următorul personaj.
Este mult mai folositor, deși și matrice de caractere pentru că de fapt obțineți.
Puteți manipula cu ușurință caracterele unul câte unul dacă faceți un indicator minus minus fiscal care este operatorul
de documentație care va seta indicatorul la caracterul anterior din text.
Presupunând că indicatorul de text a indicat acum începutul textului, deoarece dacă
ați avut aceste erori de limite.
Dacă ar fi făcut un plus plus la sfârșitul șirului, ai avea o eroare la limită.
Întotdeauna trebuie să fii atent ca o aritmetică intregă pentru a nu trece peste limitele unei matrice.
Dar foarte simplu.
Se referă foarte strâns la atunci când faci pointer pointer pointer pointer aritmetic caracter este
același lucru.
Este chiar mai util, deoarece acum vă puteți uita la caracterele
individuale fără a utiliza un indice.
Deci, dacă ne uităm la exemplul anterior și putem de fapt să optimizăm acest lucru folosind mai multe indicii pentru a face
chiar mai puține linii de cod.
Deci, acum în șirul nostru de copiere facem această declarație a funcției este aceeași ca înainte.
Creați un cuplu de indicatori utilizând asteriscul, dar nu mai folosim o buclă pentru că a fost un fel de inutil să
folosiți o buclă pentru în exemplul precedent, deoarece nu am avut de fapt nevoie să inițializăm
o variabilă de control a buclă.
Tot ce trebuia să facem a fost să ieșim dintr-o buclă într-o condiție și apoi folosim de fapt operatorii de incrementare și a
doua rotație în buclă pentru, dar nici măcar nu trebuie să facem asta.
De fapt, devine chiar mult mai simplu aici, deoarece dacă folosim o buclă în timp ce tot ceea ce
trebuie să facem este să vedem bucla În timp ce se va sari dacă arată un caracter nul, deoarece caracterul nul este
de fapt egal cu zero.
Și bucla în timp ce țineți minte că booleanii și C sunt reprezentați de întregi 1 este adevărat și apoi 0 este fals
sau chiar 0 este fals și atunci orice altceva este adevărat.
În acest caz nici un caracter zero.
Ceea ce este fals, va sari.
Deci tot ce trebuie sa faci pentru conditia de iesire din bucla in timp este pus de la un asterisc.
Dreapta.
Ce face asta dereferencing de la pentru a vedea care este valoarea acelui personaj.
Deci, când suntem la sfârșitul șirului pe care vrem să îl copiem de la noi, sărim.
În caz contrar, de fapt, chiar am pus modificările noastre cu indicatorii noștri chiar acolo.
Două plus plus plus plus.
Acum, acesta este un operator post incrementation.
Deci, ce înseamnă acest plus plus este în partea dreaptă a variabilei și atunci când
faceți asta înseamnă că plus plus nu adaugă 1 până la încheierea declarației.
Deci ce va face aceasta va spune sa inceapa sa inceapa egal si apoi dupa ce aceasta declaratie se
va termina va adauga 2 la 1 si va adauga de la 1.
Dacă ați avut plus plus înainte de numele variabilei, s-ar adăuga la acea variabilă înainte să execute
acea instrucțiune.
Și aceasta ar fi o problemă pentru că ne-ar lipsi în esență primul element care
este copiat în șir, dar nu avem nevoie de alte linii de cod, putem face doar o implementare
reală aritmetică pointer Porter și alocare în aceeași instrucțiune.
Deci, reducem codul cu unul.
Deci este foarte din nou notația este foarte simplă.
Facem o sarcină aritmetică întregă foarte ușor și apoi la sfârșit, după ce terminăm
copierea tuturor șirurilor pe care tocmai le adăugăm la sfârșitul caracterului nul al celor doi indicatori pe care îi dereferențăm.
Corect, pentru că cei doi sunt de fapt y prin buclă, dar ne îndreptăm spre ultimul personaj.
Deci este puțin mai curățată aici.
Vă arată puterea indicatoarelor de putere și modul în care puteți utiliza pointeri și aritmetică în aceleași rânduri și cu aceste oportunități
de incrementare și de rotație a rațelor plus plus și minus minusuri chiar și mai repede
și mai ușor.
Deci, este și mai eficient.
Dacă vrem să folosim aceste funcții de copiere în timpul funcțiilor, putem crea doar două caractere de caractere care
pot transmite caracterele direct în fluxul de copiere deoarece matricele de caractere sunt indicii.
In regula.
Acestea sunt pointeri, deci nu trebuie să le dereferențăm de fapt sau să adăugăm în adrese sau ceva ce am putea
să spunem șirul la șir de caractere.
Și ceea ce va face este că va copia un șir de caractere pentru a fi copiat în șir
la caracterul A și apoi va fi tipărit folosind printf.
Am vrut să trec prin faptul că știi un exemplu despre modul în care poți folosi indicii
de caractere în locul caracterelor de caractere și de ce sunt uneori preferate.
Am menționat că, uneori, preferința de programator slabă în cazul în care, dacă ați programat în limbi anterioare, cum ar
fi Fortran, s-ar putea să fiți obișnuiți să ridicați.
Dar dacă sunteți dacă o aveți, veți vedea beneficiile folosirii indicatoarelor.
Sper că acest lucru a fost de ajutor.
Mulțumesc.