Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouEric Antonio Alterado mais de 9 anos atrás
1
Joaquim José Hangalo joajoshang@gmail.com
2
Podemos entender a memória do computador como um conjunto de células que armazenam informações. Cada célula da memória possui um endereço (número inteiro de 32 bits). 1024 1025 1026 1027 1028 1029 1030 Uma variável declarada como ponteiro armazena um endereço de memória
3
Quando se cria uma variável de um determinado tipo no programa, ao executar o referido programa o Sistema Operativo reserva uma posição de memória Mas ao invés de se utilizar o endereço da variável como referencia, utiliza-se o identificador (nome) atribuído à variável 1025 X10 1027 1028 1029 1030 int x = 10;
4
Definição Ponteiros ou apontadores são tipos de variáveis que armazenam endereços de memória, possivelmente, endereços de memória de outras variáveis Declaração ▪ tipo *identificador; Exemplos int *nota char *texto float *peso double *media
5
Existem dois operadores que são utilizados com ponteiros em C & - Utilizado para obter o endereço de uma variável * - Pode comportar-se de duas maneiras ▪ Quanto utilizado na declaração indica que a variável será um ponteiro ▪ Quando utilizado na manipulação das variáveis retorna o conteúdo do ponteiro. É utilizado para obter o conteúdo do endereço apontado
6
Exemplos int *ptr, nota = 10; ptr = ¬a; nota = *ptr;
7
#include main() { int x= 10, *pi; pi = &x; printf("&x: %p pi: %p\n", &x, pi); system("pause"); } Saida &x: 0028FF44 pi: 0028FF44 Os valores apresentados são endereços de memória O operador & quando aplicado sobre uma variável retorna o endereço desta variável
8
… main( ){ int *tmp_ptr; int x, y; x = 10; tmp_ptr = &x; // tmp_ptr aponta para x y = *tmp_ptr; //conteudo tmp_ptr=10; portanto, y = 10; }
9
… main( ){ int x, *px; float y, *py; double largura, *altura; x = 1; px = &x; /* px aponta para x */ *px =; /* conteudo de px = 0 (x=0) x= *px + 1; /* x = conteudo de px +1 */ }
10
#include main(){ int *a; int b = 2; int c; a = &b; c = b; printf("%d %d %d \n", *a, b, c); b = 3; printf("%d %d %d \n", *a, b, c); system ("pause"); } Saída 2 2 2 3 3 2
11
#include main(){ int h; /* inteiro h*/ int *x; /* ponteiro para inteiro, ainda nao inicializado*/ h = 5; /* valor atribuido a h */ x = &h; /* inicialização do ponteiro x*/ printf ("h= %i; &h = %i\n", h, &h); printf("&x = %i; *x = %i, x =%i \n", &x, *x, x ); } h -> conteudo de h &h -> endereco de há x -> endereco da variável que x está a apontar &x ->endereco do ponteiro x *x ->conteudo da variável que x está apontar
12
Os ponteiros são variáveis tipadas: possuem tipos diferentes para guardar endereços diferentes. Um ponteiro para um tipo de dado int possui representação diferente de um ponteiro para tipo de dados float. (int *) ≠ (float *) ≠ (char *)
13
… main() { int *ip, x; float *fp, z ip= &x; // OK fp = 6z; // OK ip = &z; // Erro fp = &x; // Erro }
14
Modificando valores de variáveis de forma indirecta através de ponteiros #include main(){ int x = 10; int *pi; pi = &x; /*pi aponta para o endereco de x -> *pi == 10*/ (*pi)++ /* conteudo de pi + 1 -> *pi == 11*/ printf("%d", x); system("pause"); } Saida ==> 11; Ao alterar *pi está-se a alterar o conteúdo de x
15
#include main(){ int x = 10; int *pi, *pj; pi = &x; //*pi = 10; pj = pi; // *pj = 10; (*pi)++; /* conteudo de pi + 1 -> (*pi, *pj, x) = 11*/ (*pj)++; /* conteudo de pj + 1 -> (*pi, *pj, x) = 12*/ printf("%d", x); /* == > 12*/ }
16
Se se tem 2 ponteiros p1 e p2 pode-se realizar operações aritméticas com eles: p1 = p2 - desta foram p1 passa a apontar para o mesmo endereço que p2 aponta *p1 = *p2 – desta forma faz-se com que o conteúdo da variável apontada por p1 tenha o mesmo valor do conteúdo da variável apontada por p2
17
int x = 10; int *ptr; ptr = &x; *ptr = ptr * x; printf(“%d”, *ptr); printf(“%d”, x); printf(“%d”, ptr); int x[3] = {1, 2, 3}; int *p; p = x; p[0]= p[1]= p[2]; printf(“%d\n”, p[1]); printf(“%d\n”, x[1]); printf(“%d\n”, p); Qual é a saída ?
18
Praticar a declaração e utilização de ponteiros Definir e inicializar uma variável inteira Definir um ponteiro para inteiro Modificar o valor da variável através do ponteiro Verificar os novos valores da variável utilizando printf
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.