Beruflich Dokumente
Kultur Dokumente
Alocao Dinmica
int v[10];
144
V[9]
V[8]
V[7]
V[6]
V[5]
V[4]
V[3]
V[2]
V[1]
V[0]
v 104
Exemplo:
Calcular a mdia e a varincia de um conjunto de 10
valores.
Exemplo:
Exemplo:
Alocao Dinmica
Informalmente, podemos dizer que existem trs maneiras de
reservar espaos de memria para o armazenamento de
informaes:
int *v;
v = (int*) malloc (10*sizeof(int));
Alocao Dinmica
Exemplo: Considere a alocao dinmica de um vetor de
inteiros com 10 elementos.
int *v;
v = (int*) malloc (10*sizeof(int));
int *v;
v = (int*) malloc (10*sizeof(int));
if (v == NULL){
printf(Memoria Insuficiente!!);
exit(1);
}
Alocao Dinmica
Exemplo: Considere a alocao dinmica de um vetor de
inteiros com 10 elementos.
int *v;
v = (int*) malloc (10*sizeof(int));
if (v == NULL){
printf(Memoria Insuficiente!!);
exit(1);
}
free (v);
S podemos passar para a funo free um endereo de memria que tenha sido
alocado dinamicamente. Devemos lembrar que no podemos acessar o espao da
memria depois de liberado.
Alocao Dinmica
Exemplo: Calcular a mdia e a varincia de um conjunto de
valores, o programa deve ler o nmero de valores que sero
fornecidos.
L o nmero de valores
que sero lidos.
L o nmero de valores
que sero lidos.
Alocao Dinmica de
memria.
L o nmero de valores
que sero lidos.
Alocao Dinmica de
memria, testa se a
alocao de memria
foi feita com sucesso.
L o nmero de valores
que sero lidos.
Alocao Dinmica de
memria, testa se a
alocao de memria
foi feita com sucesso.
L os valores para
calcular mdia e
varincia.
L o nmero de valores
que sero lidos.
Alocao Dinmica de
memria, testa se a
alocao de memria
foi feita com sucesso.
L os valores para
calcular mdia e
varincia.
Alocao Dinmica de
memria, testa se a
alocao de memria
foi feita com sucesso.
L os valores para
calcular mdia e
varincia.
m representa a nova
v = (int*) realloc(v, m*sizeof(int));
dimenso do vetor.
Matrizes
A linguagem C permite a criao de vetores bidimensionais,
declarados estaticamente. Exemplo:
float mat[4][3];
j
mat[1][1] = e;
a b c
i v[k] = e; k = i*n+j = 1*3 + 1 = 4
d e f
g h i
j k l a b c d e f g h i j k l
Matrizes Dinmicas
Matriz Representada por um Vetor Simples:
j
mat[1][1] = e;
a b c
i v[k] = e; k = i*n+j = 1*3 + 1 = 4
d e f
g h i
j k l a b c d e f g h i j k l
float *mat;
mat = (float*) malloc (m*n*sizeof(float));
a b c
i=1 d e f
g h i j=2
a b c
i=1 d e f
g h i
Matrizes Dinmicas
Matriz Representada por um Vetor de Ponteiros:
int i;
float **mat; /*Matriz representada por um vetor de ponteiros*/
for (i=0;i<m;i++)
free (mat[i]);
free (mat);
Exerccio:
Determinar a matriz transposta da matriz A alocada
dinamicamente (Nmero de linhas e colunas deve ser
informado pelo usurio). Considere: