3

Click here to load reader

Web viewARITMÉTICA DE PONTEIROS. Como já vimos, os ponteiros em C são variáveis que possuem como conteúdo o endereço de uma variável. Essa variável

Embed Size (px)

Citation preview

Page 1: Web viewARITMÉTICA DE PONTEIROS. Como já vimos, os ponteiros em C são variáveis que possuem como conteúdo o endereço de uma variável. Essa variável

ARITMÉTICA DE PONTEIROS

Como já vimos, os ponteiros em C são variáveis que possuem como conteúdo o endereço de uma variável. Essa variável apontada tem que ser do mesmo tipo do ponteiro, pois é determinante na aritmética de ponteiros. Os ponteiros quando declarados de um tipo específico, ocupam lugar na memória do computador equivalente ao seu tipo. Por exemplo, variáveis do tipo int ocupam 4 bytes de memória, do tipo char ocupam 1 byte.

Só são possíveis operações de soma com os ponteiros: adição e subtração. Aqui se vê a importância da equivalência dos tipos do ponteiro e variável apontada. No código abaixo:

MEMÓRIAendereço conteúdo variável

1000 4 x1004 6 y1008 1000 ptr

int x=4; int y=6; int *ptr=&x; printf("%d", *ptr); "4"

Temos que a variável ponteiro ptr aponta para o a variável x, imprimindo na tela o valor “4”. Ao realizarmos um incremento neste programa:

MEMÓRIAendereço conteúdo variável

1000 4 x1004 6 y1008 1004 ptr

int x=4; int y=6; int *ptr=&x; ptr++; printf("%d", *ptr); "6"

Page 2: Web viewARITMÉTICA DE PONTEIROS. Como já vimos, os ponteiros em C são variáveis que possuem como conteúdo o endereço de uma variável. Essa variável

Vemos que o ponteiro é incrementado não apenas em 1 unidade, mas em 1 unidade de memória ao tipo que referencia. No caso, o ponteiro é do tipo int, então do endereço 1000 passa para o 1004, onde está a próxima variável do tipo int na memória. Agora, ao imprimirmos o a variável apontada por ptr, este já não aponta mais para x, e sim para y, imprimindo o valor “6”.

Se quisermos realizar um incremento na variável apontada, a sintaxe a ser usada é a seguinte:

MEMÓRIAendereço conteúdo variável

1000 5 x1004 6 y1008 1000 ptr

int x=4; int y=6; int *ptr=&x; (*ptr)++; printf("%d", *ptr); "5"