Salut și binevenit înapoi Aș dori să ofer o soluție pentru a dovedi provocarea sa în această
prelegere și demonstrarea modului în care puteți avea indicii ca elemente în interiorul structurii și, de asemenea, cum
să treci prin pointeri la funcții care sunt structuri.
Așa că hai să aducem blocuri de coduri pentru a crea un
nou proiect, aceasta va fi o aplicație consola și vom numi acest exemplu Horners.
Și astfel, dacă vă amintiți cerințele pentru acest lucru este în principiu doar o structură de tip
de produs care este stocat în Nume articol o cantitate un preț și o sumă și numele articolului a fost de gând să fie un pointer caracter.
Vei avea o sumă care în principiu doar să înmulțezi prețul Kleinian.
Și apoi am avut două funcții care iau acest lucru care va lua ca parametri pointeri la un struct.
Deci, primul lucru pe care îl vom face este că vom crea structura noastră.
Și am menționat acest lucru mai devreme, dar este bine să creați structura la nivel global, deoarece dacă doriți să
o utilizați în mai multe funcții, crearea acestei structuri definește cu adevărat că nu alocați memoria, astfel încât nu există niciun rău
care să fie pusă la nivel global.
Și de obicei intră în cap sau oricum.
Deci, pentru a crea o structură aș spune doar struct pe care o vom numi acest element
și vom avea patru elemente, vom avea un pointer de caracter pe care tocmai îl vom apela numele articolului.
Vom avea o cantitate.
Vom avea un flux de preț și vom avea un flux pentru suma și astfel putem
să definim structura noastră destul de fundamentală. Acum, în cadrul funcției noastre principale, vom dori să creăm o variabilă
pentru tip de structură și, de asemenea, POINAR.
Deci, primul lucru pe care vrei să-l faci este doar să spui element struct cu numele structurii
și apoi vom apela acest element și asta doar creează un pointer ciudat.
Aceasta va aloca memoria pentru cele patru variabile și elemente din interiorul structurii.
Și așa că vrem să ne creăm POINAR-ul acum și putem să spunem doar elementul struct pe care vom spune
elementul pentru că de obicei numim indicatorii noștri cu un prefix P Deci spunem asteriscul când spunem elementul și
apoi următoarea linie pe care noi doar vrem pentru a atribui postului nostru POINAR elementul nostru.
Deci, trebuie să folosim adresa și spunem ceva.
Și aici avem memorie alocată pentru patru elemente în structura noastră pentru POINAR.
Nu avem nicio memorie alocată indicatorului nostru de caractere, care este denumirea elementului nostru.
Deci, acesta ar fi următorul pas.
Acum puteți întreba de ce trebuie să creați elementul struct.
În realitate, nu putem crea doar pointerul și pointerul va crea doar memorie pentru acel pointer
al elementului struct.
Acesta va aloca memoria pentru flotoare, dar tot trebuie să facem alocarea numelui elementului.
Îmi place foarte mult să fac acest lucru, deoarece aceasta este, de obicei, o practică bună dacă
în mod obișnuit ce ați face cu primul element struct ca și cum l-ați inițializa și astfel veți avea ceva inițializare.
Dar nu trebuie să facem asta.
Deci, primul lucru pe care vreau să-l fac este să aloce memoria pentru numele elementului nostru, astfel încât să putem folosi un operator
special pentru a accesa elementele dacă este un pointer.
Amintiți-vă pentru structurile care sunt indicatori ai liniuța, atunci mai mare decât simbolul pe care
îl puteți folosi pentru a accesa elementele. Altfel, ar trebui să dereferenți pointerul pentru a accesa elementele.
Am putea face ceva de genul asta.
În paranteze în paranteză am putea dereferența indicatorul, așa că ar trebui să facem ceva asemănător cu elementul P și apoi
să folosim punctul pentru a accesa elementele.
Acest lucru este perfect valabil pentru a face ceva de genul asta, dar este un fel de sintaxă suplimentară, astfel încât să nu ai nevoie de
ea.
Deci, C are o sintaxă specială pe care o puteți folosi de fiecare dată când structura dvs. este un pointer dacă
doriți să accesați elementele.
Puteți să spuneți doar numele indicatorului care este elementul și apoi să utilizați liniuța și mai
mare decât.
Și în acest caz vrem să alocăm memorie pentru numele elementului.
Așa că o să-i atribuim ceea ce este returnat din funcția Mallik.
Amintiți-vă că funcția Malate returnează un pointer gol.
Așa că trebuie să o aruncăm într-o stea de caractere, dar o putem numi pe Mallik doar pe Mallick.
Și apoi mărimea octeților pe care vrem să le creăm.
În acest caz, vom spune doar 30 și vom înmulți după dimensiunea char doar în cazul în care char este
o dimensiune diferită pe computere diferite.
Și aceasta va aloca memorie pentru numele articolului.
Trebuie să facem acest lucru din cauza faptului că numele elementului este un pointer în interiorul structurii.
Nu are memorie alocată pentru aceasta.
Când o atribuiți unei alte structuri.
OK, așa că trebuie să facem asta.
Acum, primul lucru pe care doriți să îl faceți după alocarea memoriei este verificarea hărții.
Așadar, vrem să verificăm dacă știm sau vom spune că știți dacă nu este cazul.
Asta aș spune că nu este.
În caz contrar, ai putea spune dacă nu ai putea să-i spui întoarcerea sau X ar fi mai bine.
Ieșiți din program.
Nu am putut să alocăm memoria și ai putea să o dai într-una negativă.
Altfel, vrem să citim într-un articol.
Deci, o mulțime de a crea o funcție de funcție pe care o vom crea este numită Citire element.
Să facem o declarație de funcționare a întregii structuri.
Va fi doar citirea datelor în structura pe care am trecut-o.
Nu vom returna niciun fel de date, astfel încât să putem spune doar elementul citit și
este nevoie de un struct și acesta va fi un pointer, deci este un asterisc item struct.
Acum, am putea face acest lucru constant.
Deci, valoarea se va schimba, dar schimbăm valorile.
Dar am putea să spunem că se vor trage concluziile.
Valorile nu s-ar putea modifica pentru indicatorul pe care îl indică.
Dacă am făcut constanta după asterisc care ar spune că adresa nu se poate schimba sau chiar
înainte de asterisc.
Ceva de genul ăsta după nume.
Asta ar spune că adresa nu se poate schimba, dar este redundantă pentru că trecem prin valoarea de copiere.
Avem elementul citit în timp ce sunt aici.
Îmi voi face articolul de imprimare.
Asta va fi doar un prototip de funcție de declarație a funcției.
Aici va fi foarte asemănător.
Luați și un spațiu Gavotte, dacă doriți.
După asterisc sau nu.
Acum putem defini metoda citirii elementului cloramină și aceasta va fi citită în valorile elementului și apoi se
calculează suma totală.
Așa că putem spune că elementul nu are voie să aibă indicatorul nostru înăuntru aici
Vrem doar să folosim niște scanări Neff e de fapt să tipăm câteva mesaje pentru a le spune
utilizatorului sau pentru a introduce informații așa că vom spune Enter nume
produs și sunt să o citească.
Așa că o să scanăm f și avem un pointer la un struct astfel încât să îl putem accesa
folosind biroul și gradul și decât dorim să citim în pre-conserve numele proc este un buffer de caractere așa că vreau să spun procent .
Și apoi vom spune că vom stoca în numele elementului astfel încât să ne putem întoarce și să folosim intellisense.
Mergeți la numele articolului.
Nu trebuie să utilizăm adresa operatorului, deoarece este un indicator de caractere.
Apoi dorim să tipărim și să obținem prețul pe care vreau să-l vad aici.
Și la prețul pe care îl vom păstra în structură.
Așadar, prețul este încă un flotor.
Deci, unde este procentul jumătate din ceea ce vom accesa, de asemenea, pentru că este un punct sau tot mai dorim să
folosim liniuța și mai mare atunci.
Cu excepția acestui moment, vom vedea un preț și trebuie să luăm adresa acestuia, astfel
încât vom pune un ampersand în fața acestuia pentru că prețul nu este un punct
și atunci vom face același lucru pentru cantitate.
Cantitatea cantității este un număr întreg.
Așadar, putem spune procentul D, în continuare, trebuie să obținem adresa a ceea ce dorim să stocăm într-un alt element.
Vrem să-l stocăm în preț sau în cantitate.
Acum, că am stocat sau se întreabă, utilizatorul a introdus trei elemente de informații.
Acum, putem calcula cantitatea stocată într-o cantitate egală cu cantitatea
de preț.
Așadar, încă vrem să accesăm structura folosind păcatul nostru pentru a corecta sintaxa și dorim să îi atribuim că dorește să o
distribuie.
Vrem să alocăm cantitatea ori prețul și aceasta este funcția elementului
citit care are un indicator al structurii.
Și atunci când modificăm acest pointer în interiorul elementului citit, acesta va fi
modificat în afara funcției.
Dreapta.
Deci orice structură pe care o vom trece în această funcție se va modifica.
Se vor stoca toate articolele elementul numit preț și cantitate și sumă.
Așa că citește datele.
Acest punct pe care doriți să îl testați și probabil că doriți să îl compilați și să îl testați înainte de aceasta.
Dar putem numi acum metoda elementului citit în principala noastră și o putem transfera în structura pe care am creat-o astfel încât să putem spune un element
citit și putem spune doar elementul pe care nu trebuie să-l transmitem deoarece este un pointer, așa că noi doar treci pe
structura noastră și apoi următorul lucru pe care îl putem face este să îl putem imprima.
Și ceea ce vă va arăta este că datele sunt salvate.
Elementul este modificat în interiorul funcției și este salvat în afara funcției, funcția principală a
salvat efectiv aceste valori.
Deci, puteți spune că articolele de imprimare trecând în punctul arogant și apoi putem defini funcția elementului de tipărire pentru un element este destul
de fundamental, este că nu este returnat nimic din Savoye, așa că spunem nevalid.
Și spunem că elementul de tipărire are un pointer, așa că spunem doar elementul stânjenit pe care l-ai numit.
Și apoi vom tipări datele pentru structura care a fost transmisă.
Deci am face ceva asemănător cu numele f.
Denumire Denumire Prețul I Cantitățile pe care le am Sunt formate apoi datele Care este ultimul lucru pe care trebuie să-l facem
în principal după ce imprimam datele.
Funcția liberă într-adevăr foarte importantă ne-a primit un apel gratuit pentru că vrem să eliberăm
memoria pe care am alocat-o pentru elementele, astfel încât să putem doar un element gratuit și apoi să accesăm numele
elementului pe care nu dorim să-l eliberăm întreaga structură deoarece întreaga structură va fi ștearsă în stivă când
funcția revine.
Vrem doar să eliberăm ceea ce noi Malapert am modificat doar un nume, astfel încât să eliberăm acest lucru și apoi să ne întoarcem de
la principalele.
Așa că hai să mergem mai departe și să încercăm să ne construim și avem un aer să vedem cum spune elementul stele struct.
Așa că am avut o greșeală în care funcțiile au fost definite deasupra structurii, dar funcția a luat un parametru
ca un tip struct.
Așa că trebuie să avem structura definită mai sus unde o folosim.
Așa că mișc funcțiile pe liniile 12 și 13.
Acum suntem capabili să compilem Să mergem mai departe și să conducem asta.
Și să vedem ce ajungem aici.
Am mai avut încă o dată.
Trebuie să vă asigurați că le verificați acum.
Dacă spui doar dacă elementul adevărat va fi întotdeauna adevărat.
Deci, puteți verifica fie să spuneți că nu este adevărat cu simbolul care înseamnă că nu este acum sau puteți
verifica dacă este nul.
Așa că am adăugat nulul acolo.
Deci, acum vom rula ar trebui să fie bine să mergem putem introduce numele de produs vom spune de cereale și vom spune că prețul este
un dolar nouăzeci și nouă și vom spune că avem cinci dintre acestea.
Și acum am tipărit și spunem că dolarul Ciril nouăzeci și cinci de cinci.
Suma totală este de 995.
Prețul, deși nu-mi plac toate prețurile tipărite, așa că haideți să reparăm faptul că în elementul nostru de
imprimare putem doar
salva pentru prețul la plutitoare.
Acum va arăta puțin mai bine.
Și am fost pe ea.
Vom obține un format
puțin mai bun pentru că acum arată puțin mai bine decât este bine să mergem.
Deci, din nou programul de bază folosind structuri și indicatori.
Am creat structura în partea de sus.
Avem un membru care conține un pointer este foarte eficient pentru a face acest lucru pentru că
putem doar să copiem și adrese ar trebui să caracterizeze.
Avem cele două declarații de funcții care citesc elementul de imprimare al elementului, care iau distrugerile lui
Poitier și apoi creează pointerul și îl atribuie unei structuri obișnuite în interiorul rămășițelor noastre.
Am alocat memoria pe linia 22.
Ne asigurăm că memoria este alocată cu succes dacă nu ieșim din program și apoi
sunăm cele două funcții care iau indicii în structuri care le-au transmis.
Și apoi, nu în ultimul rând, eliberăm memoria.
Apoi ieșim din program și funcțiile sunt destul de simple.
Luați asta ca un pointer.
Accesați banii în liniuță și mai mare decât și obțineți adresa acestora pentru aplicații de scanare care nu au acelea
care nu sunt pointeri ca elemente și asta este în esență.
Voi salva acest program pe care îl vom arunca o privire la el dă-mi să știu dacă aveți orice întrebări.
Mulțumesc.