De ce indicii în C

De ce indicii în C?

Blogul are deja o lecție care spune despre indicii. În tutorial, am încercat să explice în detaliu ceea ce indicele și modul în care se poate lucra. Dar am uitat cel mai important lucru, atunci ce costa pentru a începe. Și cititorii grijuliu va observa rapid acest lucru este neajuns meu și a început să pună întrebări logice: „De ce toate astea? De ce indicii? De ce nu lucrăm cu variabile? În mod normal, era totul, bine, ce ai început asta? Huh? "

Și adevărul, ceea ce am început, atunci? Este timpul să dot i. Deci, mai jos sunt câteva răspunsuri la întrebarea: „De ce în C nevoie de indicii?“

Răspunde numărul unu.

C Regulile lingvistice sunt de așa natură încât, fără utilizarea de indicii, unele lucruri nu pot fi realizate.

Buzzwords exemplu bun și ilustrativ este chiar mai bine.

Vă reamintesc că, în variabilele limbajului C în funcția sunt trecute „de valoare.“ Acest lucru înseamnă că, atunci când vom apela funcția cu unii parametri, memoria a creat o copie a acestor variabile și le-au funcția de lucrări. Când funcția termină activitatea, copiile sunt distruse.

Și cu atât mai mult ne împiedică?

Ei bine, în esență, că nu putem scrie o funcție care modifică valorile două variabile în locuri. În principiu, am vorbit deja despre această problemă și chiar a adus decizia ei, dar într-un fel nu a concentra atenția asupra faptului că nu indicii pentru a scrie o astfel de funcție este imposibilă. Dar asta a fost tot într-un singur loc, pe scurt din nou.

La prima vedere, se pare că totul este în regulă, dar care rulează următorul program este ușor de văzut că am scris funcția nu funcționează așa cum ne așteptăm.

void swap (int a, int b)

De ce indicii în C

void swap (int * pi_a, int pi_b *)

// accepta indicii pentru a int variabile

// ca funcția de swap are indicii

Rezultatul programului cu utilizarea de indicii:

De ce indicii în C

După cum puteți vedea, acum că funcția funcționează așa cum este necesar.

Răspunde numărul doi.

Pointerii pot exploata în mod eficient oportunitățile și resursele informatice.

Deși răspunsul este o alta, iar cauza este încă la fel. Transmiterea argumentelor unei funcții. Am menționat deja mai sus, o copie a variabilelor trecut la funcția. Această regulă nu se aplică în matrice. Matricele sunt întotdeauna transmise „prin referință.“ Aceasta este ceea ce face ca utilizarea eficientă a resurselor și capacitățile computerului.

Imaginați-vă că ați promovat o serie de 10.000 de valori duble de valoare. Asta este, atunci când apelați funcția programului ar trebui să găsească spațiu suficient pentru a stoca mai multe date. Mai mult decât atât, spațiu continuu, ca matrice, așa cum trebuie să vă amintiți, sunt localizate secvențial în memorie. Și, în plus, ar fi necesar pentru a copia toate elementele dintr-o matrice la alta.

O astfel de abordare ar fi servit o mulțime de timp și de memorie, și, în general, ar fi fost imposibil pentru tablouri mari. Și așa am trecut un pointer la primul element și să se bucure. Nu am nevoie de o mulțime de memorie pentru a căuta, și copie nu trebuie să.

Al treilea răspuns.

Utilizarea de indicii vă permite să scrie programe eficiente.

Până în prezent, cred în cuvântul. Cunosc un caz în care voi adăuga aici un pic mai târziu.

Al patrulea răspuns.

Acest răspuns, probabil, se referă la întrebarea: „De ce trebuie să știți semnele?“, Mai degrabă decât la întrebarea inițială: „De ce au nevoie de indicii în C, practic?“.

Răspunsul este evident și banal.

limbajul C este conceput în așa fel încât, fără a cunoaște principiile de lucru cu indicii, esti pur si simplu nu fi capabil de a utiliza o mulțime de caracteristicile sale.

EXEMPLU provoca foarte ușor. Deschideți Ghidul pentru funcțiile de coarde în C și uite cu atenție că aceste funcții se întoarcă. Un număr foarte mare dintre ele a revenit ca urmare a unor indicii lor de lucru. Și dacă ești dintre ei nu știu nimic, cum poți să le folosească? Da fel.

Asta e tot pentru azi.

Descărcați o versiune text a lecției. [PDF]

articole similare