Please enable JavaScript.
Coggle requires JavaScript to display documents.
Pointers, Dynamic Allocation and Structs (Ponteiros (Uma variável que…
Pointers, Dynamic Allocation and Structs
Ponteiros
-
-
-
Para fazer um ponteiro armazenar o endereço de uma variável, deve-se usar o & (Ex: [ponteiro] = &[variave])
Para acessar o valor da variável que o ponteiro aponta deve se usar o aterisco (Ex: cout << *[ponteiro];)
Se você incrementar um ponteiro(sem usar o "*"), ele irá para a próxima posição na memória.
Alocação Dinâmica
Muito útil com vetores, aumenta o tamanho de um vetor em tempo de execução usando a notação de ponteiros
-
Para declarar um vetor dinâmico é simples, é igual a declarar um ponteiro.
Para adicionar as posições que você quer no vetor dinâmico, usamos a função malloc que aloca posições de memória.
A função malloc precisa do tamanho do tipo das variáveis que você vai colocar (usamos o sizeof) multiplicado pelo número de posições que você quer.
-
-
Caso queira aumentar o tamanho do vetor mais tarde, use a função realloc (usa a mesma lógica do malloc)
-
Caso queira liberar a memória mais tarde, use a função free
Se você for usar matrizes, vai ter que usar dois ateriscos na declaração do ponteiro
Depois de seguir a mesma lógica que os vetores, voce irá usar um for que irá percorrer os elementos do ponteiro e ir usando a função maloc para "aumentar" o tamanho dessas posições (praticamente criando um novo vetor em cada uma delas)
Use free seguindo a mesma lógica para liberar o espaço. (Porém lembre-se de primeiro apagar os vetores "filhos" antes de apagar o pai)
Struct
-
-
Para acessar os "filhos" (também chamado de campos) de uma instância, usamos o ponto ("."). Ex: [nome_instância].[campo] = [valor]
Depois de ser declarada a estrutura, você tera que criar "instâncias" da estrutura para começar a usá-la. A sinstaxe pra criar uma é assim: [nome_struct] [nome_instância];
Se você criar uma instância de uma struct usando um ponteiro, você irá substistuir o "." por "->" (claro, isso depois de você colocar o endereço de memória de uma struct no ponteiro (ou pode usar malloc))
Struct também pode ser usado para criar Lista Encadeada, que é um "vetor" de structs em que cada instância possui a pŕoxima instância da fila (ou o endereço).
Pora isso, na declaração da struct, terá que ter um ponteiro que irá armazenar o endereço da próxima instância.
-