17.04.2013 Views

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

chiar si alte biblioteci de functii pentru alocare/eliberare de memorie, cu anumite<br />

avantaje fatã de functiile standard.<br />

Vectori alocati dinamic<br />

Structura de vector are avantajul simplitãtii si economiei de memorie fatã de alte<br />

structuri de date folosite pentru memorarea unei colectii de date. Dezavantajul unui<br />

vector cu dimensiune fixã (stabilitã la declararea vectorului si care nu mai poate fi<br />

modificatã la executie) apare <strong>în</strong> aplicatiile cu vectori de dimensiuni foarte variabile, <strong>în</strong><br />

care este dificil de estimat o dimensiune maximã, fãrã a face risipã de memorie.<br />

De cele mai multe ori programele pot afla (din datele citite) dimensiunile vectorilor<br />

cu care lucreazã si deci pot face o alocare dinamicã a memoriei pentru acesti vectori.<br />

Aceasta este o solutie mai flexibilã, care foloseste mai bine memoria disponibilã si nu<br />

impune limitãri arbitrare asupra utilizãrii unor programe. In <strong>limbajul</strong> C nu existã<br />

practic nici o diferentã <strong>în</strong>tre utilizarea unui vector cu dimensiune fixã si utilizarea unui<br />

vector alocat dinamic, ceea ce <strong>în</strong>curajeazã si mai mult utilizarea unor vectori cu<br />

dimensiune variabilã.<br />

Un vector alocat dinamic se declarã ca variabilã pointer care se initializeazã cu<br />

rezultatul functiei de alocare. Tipul variabilei pointer este determinat de tipul<br />

componentelor vectorului.<br />

Exemplul urmãtor aratã cum se poate defini si utiliza un vector alocat dinamic:<br />

#include <br />

#include <br />

int main() {<br />

int n,i; int * a; // adresa vector alocat dinamic<br />

printf ("n="); scanf ("%d", &n); // dimensiune vector<br />

a=(int *) calloc (n,sizeof(int)); // aloca memorie pentru vector<br />

// sau: a=(int*) malloc (n*sizeof(int));<br />

printf ("componente vector: \n");<br />

for (i=0;i

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!