programação 2
Computacionais
Ponteiros em C
Cristiano Maciel da Silva
Revisão Base Hexadecimal
Binário
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Hexadecimal
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
Exemplo:
Decimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
03E8
03
0
E8
3
E
0000 0011
8
1110 1000
0x163 + 3x162 + 14x161 + 8x160
0
+ 768
+
224 + 8
= 1000(10)
Hexadecimal é muito útil
Apresenta o detalhe dos bits em formato condensado. Para converter de binário para hexadecimal, basta agrupar 4 bits.
Por isto, um byte sempre é representado por 2 algarismos hexadecimais (8 bits). Definição
Ponteiros são variáveis que contêm endereços de memória.
Se uma variável contém o endereço de outra, ela é dita apontar para a segunda.
Endereço na Memória
1000
1001
1002
1003
1004
1005
1006
Variável na Memória
1003
Declaração
Consiste na definição do tipo base, um * e o nome da variável. tipo *nome;
Ex: char *ch;
Para obter o endereço de uma variável utiliza-se o operador &.
Para obter o valor presente no endereço apontado pela variável utiliza-se o operador *.
Exemplo (1/3) char ch1; char ch2; char *p;
Endereço
1000
1001
1002
//declara ponteiro para caractere
Conteúdo Memória
Var ch1 ch2 p ch1 = ‘A’; // coloca ASCII 65 em ch1
Endereço
1000
1001
1002
Conteúdo Memória
65
Var ch1 ch2 p Continuação do Exemplo (2/3) p = &ch1; // p recebe o endereço de ch1 (1000)
Endereço
1000
1001
1002
Conteúdo Memória
65
1000
Var ch1 ch2 p *(p+1) = 13; // memória 1001 recebe o valor 13
Endereço
1000
1001
1002
Conteúdo Memória
65
13
1000
Var ch1 ch2 p ch2 = *p; // ch2 recebe o valor presente no endereço 1000
Endereço
1000
1001
1002
Conteúdo Memória
65
65
1000
Var ch1 ch2 p Continuação do Exemplo (3/3)
*p = ´B´; // coloca no endereço