Programar em C/Capa: diferenças entre revisões

[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
Linha 1 084:
Uma variável normal tem uma localização na memória que pode conter um valor. Por exemplo quando declaramos int i; quatro bytes de memória são reservados e a esses 4 bytes chamamos de name i.
 
Um pointer (ou ponteiro, em português) é uma variável que quando declarada, também é reservado um espaço na memória, mas em vez de guardar um valor guarda o endereço de memória de uma uma outra variável, guarda a direcção de uma outra variável.
* Ponteiros guardam endereços de memória.
* Um ponteiro também tem tipo
 
Qual é a vantagem dos pointers.
Uma das vantagens é a situação, imaginemos que queresmosqueremos colocar uma quantidade enorme de dados para uma função. É muito mais fácil indicar a localização dos dados do que copiar cada elemento dos dados.
 
 
Para declarar usamos:
'''tipo_do_ponteiro *nome_da_variável;'''
É o asterisco (*) que faz o compilador saber que aquela variável não vai guardar um valor mas sim um endereço para aquele tipo especificado
 
'''int *pt;'''
se tivermos vários pointers, temos de colocar o asterisco em cada um;
'''int *pt1, *pt2; '''
 
Ainda não foi inicializado. Isto significa que eles apontam para um lugar indefinido
Linha 1 129 ⟶ 1 130:
 
Os erros mais comuns são:
*A não iniciação dos pointers. dito de outra forma é dizer que realmente temos um pointer e é reservada memória, mas que depois não dizemos o que queremos guardar nesse espaço. p=&i; isso faz com que o p aponte para qualquer sítio na memória.
* A não iniciação dos pointers
dito de outra forma é dizer que realmente temos um pointer e é reservada memória, mas que depois não dizemos o que queremos guardar nesse espaço. p=&i; isso faz com que o p aponte para qualquer sítio na memória.
E depois quando fazemos *p=12; estamos a pedir para guardar esse nº 12 nesse local da memória que não sabemos onde é.
 
 
Se eu tiver dois ponteiros e mesmo depois de iniciados fizer p1=p2. Repare que estamos fazendo com que p1 aponte para o mesmo lugar que p2. Se quisermos que a variável apontada por p1 tenha o mesmo conteúdo da variável apontada por p2 devemos fazer *p1=*p2
 
 
== Operações com ponteiros ==