Buscar

Ponteiros seus conceitos e formas de utilizar

Prévia do material em texto

Ponteiro 1
🌑
Ponteiro
Conceito
Características 
Toda variável ocupa um espaço que é o seu endereço.
Ponteiros são variáveis que armazenam o endereço e não o seu nome.
Por meio do ponteiro se acessa o endereço e se altera o seu valor.
Problemas que ocorrem
Podem apontar para um objeto que não foi declarado causando erros, como:
endereços não utilizados
para dados dentro da memória que estão sendo usados para outra coisa
Declarando
Quando se declara o tipo, o ponteiro pode apontar para uma variável daquele tipo
tipo *nome
Utilizando
Quando o ponteiro é declarado e não tem um endereço associado da um 
comportamento indefinido no programa
Um ponteiro pode ter um valor NULL, que é um endereço de nenhum lugar ( 
Essa constante NULL é definida na biblioteca stdlib.h )
int *nome = NULL
É possível somar e diminuir o endereço de um ponteiro, mudando a 
quantidade de memória necessária para ele. 
Quando se quer saber o endereço dele é só colocar %nome do ponteiro no 
printf
printf("Endereço é: %p",p);
Ponteiros Genéricos
Ponteiro 2
São ponteiros que apontam para todos os tipos de dados, sendo declarados 
como void.
Para acessar o conteúdo dentro de um ponteiro genérico é preciso converter 
para o tipo do conteúdo que está dentro dele
(int*)p 
Um problema que ocorre com ponteiros genéricos é em relação as operações 
aritméticas para mudar o endereço, pois o mesmo só muda 1 byte Isso quer 
dizer que dependendo da operação não existe mudança na posição)
Array
Ponteiro para um Array
Guarda um endereço em um espaço do array.
Declarando → tipo *nome[tamanho]
Multidimensionais
Apesar do seu comportamento multidimensionais, seus dados são armazenados 
linearmente.
O armazenamento ocorre em ordem, os conjunto de uma mesma linha vem 
sempre um do lado do outro.
A formula para achar o endereço desejado
linha do endereçonúmero de elementos por linhas + colunas do endereço 
desejado
Se multiplica o número elementos pois se está pulando para a linha 
desejada
Detalhes
Para fazer um ponteiro apontar para outro ponteiro é só usar +*n vezes a 
quantidade de ponteiros que ele aponta
Demonstração
Ponteiro 3
 **p2 = &p1

Continue navegando