Sunteți pe pagina 1din 4

Alocarea dinamic a memoriei funcii standard utilizate pentru alocarea dinamic a memoriei; zona de memorie HEAP; malloc, calloc,

realloc;
stdlib.h : void * malloc ( size_t size ); void * calloc ( size_t num, size_t size ); void * realloc ( void * ptr, size_t size );

Observaie: Fiecare dintre funciile de alocare ( malloc, calloc, realloc) va returna adresa zonei de memorie alocata ( void * ). In cazul n care acesta nu poate fi alocat, atunci rezultatul alocrii este !"". "a apelul fiecrei funcii se va utiliza: - Operatorul sizeof : determin dimensiunea necesar unui tip de date; - Operatorul de cast pentru conversia adresei primite n urma alocrii ( void # ) la tipul de date care va fi memorat la adresa respectiv. $%emple:
//malloc #include <stdio.h> #include <stdlib.h> int main() { int *p; p ( int *)malloc(sizeo!(int )); i!( p "#$$){ print!(%&roare la alocarea de memorie'%); return (; ) *p (*; print!(%+d%, *p); !ree(p); return *;

) //calloc //vector alocat dinamic( cu numarul de elemente cunoscut) #include <stdio.h> #include <stdlib.h> int main() { int *p,n; int i ,(; print!(%-ntroduceti numarul de elemente. %); scan!(%+d%,/n); p (int*)calloc(n,sizeo!(int)); i! ( p "#$$){ print!(%&roare la alocarea de memorie'%); return (;

) print!(%0n-ntroduceti elementele.0n%); !or(i *; i<n ;i11) { scan!(%+d%,/p2i3); ) print!(%&lementele citite. %); !or(i *;i < n;i11) { print!(%+d %,p2i3); ) !ree(p); return *;

) //realloc //vector alocat dinamic( cu numarul de elemente necunoscut) #include <stdio.h> #include <stdlib.h> int main() { int input,n; int count *; int * numbers "#$$; int * more_numbers; do { print! (%-ntroduceti o valoare ('*). %); scan! (%+d%, /input); count11; more_numbers (int*) realloc (numbers, count * sizeo!(int));

i! (more_numbers' "#$$) { numbers more_numbers; numbers2count,(3 input; ) else { !ree (numbers); puts (%&roare la alocarea de memorie'%); e4it ((); ) ) 5hile (input' *); print! (%&lementele citite. %); !or (n *;n<count;n11) print! (%+d %,numbers2n3); !ree (numbers); )

Tablouri alocate dinamic


//alocarea dinamica a unei matrice patratica #include <stdio.h>

#include <stdlib.h> int main() { int n, i, 6; int **mat; //adresa matrice patratica print!(%n %); scan!(%+d%,/n); mat (int **)malloc(n * sizeo!(int *)); i!( mat "#$$ ){ print!(%&roare''%); return (; ) !or (i *; i < n; i11){ mat2i3 (int *)calloc(n, sizeo!(int)); ) !or (i *; i < n; i11){ !or (6 *; 6 < n; 611){ mat2i3263 n * i 1 6 1 (; ) *; i < n; i11){ !or (6 *; 6 < n; 611){ print!(%+d %, mat2i3263); ) print!(%0n%);

) !or (i

) )

return *;

$%erciii: &. 'e consider secvena de intruciuni de mai (os:

char *mem7ir(char *s) { char *p; i!((p (char *)malloc(strlen(s)1())' *) { strcp8(p,s); return p; )else return *; ) ' se scrie funcia main care apeleaz funcia memSir.

char *tpdl23 {

). 'e consider instruciunile de mai (os:


%luna ile9ala%, %ianuarie%,

); print!(%+s0n%,tpdl2(3);

%!ebruarie%, %martie%, %aprilie%, %mai%, %iunie%, %iulie%, %au9ust%, %septembrie%, %octombrie%, %noiembrie%, %decembrie%

'e cere s se scrie o funcie care are ca parametru un ntre* n i returneaz un pointer care indic spre denumirea lunii calendaristice n ( pentru & + n + &)) sau spre ,luna ile*ala, (pentru &- + n sau n + . ) -. a. ' se scrie un pro*ram care citete o dat calendaristic sub forma zzllaaaa , valideaz data citit i o afieaz sub forma zz ll aaaa . b. ' se scrie un pro*ram care citete o dat calendaristic sub forma zz ll aaaa , valideaz data citit i o afieaz sub forma zz/ll/aaaa . /. 'e consider un cuv0nt format din ma%im -. de caractere. 'e cere s se codifice acest cuv0nt astfel: dup fiecare vocal se va adau*a *rupul de litere format din caracaterul p urmat de vocala respectiv. ' se afieze cuv0ntul obinut dup codificare 1entru str 2 informatica se va obine codificarea ipinfopormapatipicapa

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