As estruturas de dados homogeneas so estruturas de dados lineares e estaticas, isto , so
compostas por um numero finito de elementos de um determinado tipo de dado. O acesso dos elementos feito pelo seu indice no vetor, ou indices no vetor, ou indices na matriz. Porem a remoo de elementos pode deixar ndices "vazios" no meio do vetor, nesse caso necessario reorganizar todos os elementos depois do elemento removido. O indice inteiro e positivo. Tem acesso rpido aos seus elementos, mas a limitao de ter o tamanho fixo.
#Estrutura de dados heterogenea ( REGISTRO) um grupo de variaveis, no qual cada um possui um identificador proprio e determinado tipo de dados, conhecidos como membros da estrutura.
struct nomeReg { int codprod; char desc[20]; float preco; };
struct nomeReg Reg1,Reg2; Reg1 e Reg2 so as variaveis declaradas no tipo de registro
Na linguagem C, uma estrutura s pode ser passada como parametro para uma funo, atraves de seu endereo, fazendo uma referencia a ela atraves de um ponteiro (passagem de parametro por referencia). A Notao p -> x (p que aponta para x) equivale a * p.x, e usada para fazer referencia a um membro da estrutura.
# Alocao dinamica da memoria a maneira de solicitar e usar memoria durante a execuo de um programa. temos 2 grupos distintos:
- Alocao esttica: Os dados tem tamanho fixo e estao organizados de forma sequencial na memoria do computador. exemplo
variaveis globais, vetores, e matrizes.
- Alocao dinamica: os dados no precisam ter um tamanho fixo pois podemos definir cada dados a memoria que desejamos usar. sendo assim vamos abrir espaos de memoria (blocos ) que nao precisa estar organizados de maneira sequencial, podendo estar distribuidos da forma esporsa na memoria.
Na alocao dinamica vamos pedir para alocar / liberar blocos esparsos na memoria, usamos as variaveis tipo ponteiro, que so indicadores de endereo de memoria.
#ponteiro e alocao dinamica de memoria ponteiros contem endereos de memoria e podem usar rotinas de alocao de memoria, como forma de armazenar dados. Operadores dos ponteiros (& e *).
O operador &, devolve o endereo na memoria de seu operando. O operador *, devolve o valor da variavel localizada no endereo que o segue.
O ponteiro permitem que funes modifiquem seus argumentos de chamada. O uso mais proveitoso de ponteiros enderear objetos dinamicos, que so alocados em tempo de execuo.
ponteiro: o ponteiro que ter espao disponivel alocado por esse comando tipo_var: indica se o ponteiro do tipo inteiro (int) real (float) ou caracter (char), etc malloc: uma funo, definida em stdlib.h, que alocar espao na memoria Quando malloc no puder encontrar memoria suficiente, ela retornara um ponteiro nulo, usuamente igual a 0 (zero). Deve-se verificar se uma chamada malloc foi bem sucedida, tipicamente e usando o comando if para verificar se um comando resultante nulo.
qtde: o total de elementos a ser guardado na memoria. Quando especificados a quantidade o ponteiro pode ser trabalhado como vetor.
SizeOf(tipo_var) ira especificar o tamanho em bytes que um elemento da variavel ocupara.
sizeof retorna o tamanho em bytes que um elemento da variavel ocupara
qtde*sizeof(tipo_var) ira indicar para a funo malloc a quantidade de memoria a ser alocadas. esta operao pega o espao ocupado por uma unidade de variavel e multiplica pela quantidade necessaria
apos a utilizao do ponteiro importante liberar a memoria dinamica
free(nome_ponteiro)
lista - sequencial pilha - sequencial fila - sequencial todos sao exibidos da mesma forma, e a forma como eles so removidos o que os definem