Sunteți pe pagina 1din 3

Alocarea dinamic a memoriei memorie Heap: zona de memorie speciala( distincta de stiva); functii utilizate pentru alocarea dinamica

a memoriei: o malloc, calloc, realloc; o free;

void *malloc(unsigned n) void *calloc(unsigned nrelement,unsignede dimelement) void free(void *p) Exemple: 1. int *p,n; n=10; p=(int *)malloc(n*sizeof(int)); *p=123; free(p);

Observaii: 1. unsigned n ; 2. Test valoarea alocata in memorie( pointer null);


2. int i,n; int *p; printf("\nIntroduceti numarul de elemente:"); scanf("%d",&i); p=(int*) calloc(i,sizeof(int)); if (p==0) exit(1); //citirea elmentelor printf("Introduceti elementele:\n"); for(n=0;n<i;n++) { scanf("\n%d",&p[n]); } //afisare elmente for(n=0;n<i;n++) { printf("%d\t",p[n]); } free(p);

EX: S se scrie un program care pstreaz un ir de caractere ntr-o zon de memorie alocat dinamic. char *memSir(char *s) { char *p; if((p=(char *)malloc(strlen(s)+1))!=0) { strcpy(p,s); return p; }else return 0; } S se scrie secvena de instruciuni pentru funcia main() care apeleaz funcia dat mai sus.

Utilizarea tablourilor de pointeri pentru prelucrari de date de tip sir de caracter - iruri de caracter care se trateaz n mod unitar;
char *p=sir; //p adresa de inceput a zonei de memorie la care se //gaseste sir

char *tpdl[]= { "luna ilegala", "ianuarie", "februarie", "martie", "aprilie", "mai", "iunie", "iulie", "august", "septembrie", "octombrie", "noiembrie", "decembrie" }; printf("%s\n",tpdl[1]); T1: S se scrie o funcie care are ca parametru un intreg n i returneaz un pointer spre denumirea lunii calendaristice a n-a pentru 1<=n<=12 sau spre "luna ilegala" pentru n n afara acestui interval. T2: S se scrie o funcie care din denumirea unei luni calendaristice determin numrul ei.

T3: S se scrie un program care citete o dat calendaristic scris sub forma zzllaaaa o valideaz si o afiseaz sub forma: zz luna aaaa T4: S se scrie un program care citete o dat calendaristic scris sub forma zz luna aaaa o valideaz si o afiseaz sub forma: zz/ll/aaaa

Tema: 1. a. S se scrie o funcie care terge dintr-un ir de caractere un subir sprecificat prin poziie i lungime. Funcia ntoarce un pointer la irul modificat. b. S se scrie o funcie care insereaz ntr-un ir, ncepnd cu o poziie dat, un alt ir Funcia ntoarce un pointer la irul nou creat, alocat dinamic c. Scrieti o funcie main() care citete dou cuvinte i nlocuiete ntr-un text introus de la tastatur, toate apariiile primului cuvnt prin cel de-al doilea. 2. Se da un cuvant, format din maxim 30 de litere mici. Sa se codifice acest cuvant astfel: dupa fiecare vocala sa se adauge grupul de litere format din caracterul p urmat de vocala respectiva. Sa se afiseze cuvantul obtinut dupa codificare. ( siruri de caractere ) Exemplu : Fie cuvantul = informatica, Dupa codificare : ipinfopormapatipicapa.

S-ar putea să vă placă și