Ponteiros-ApresentaçãoemSala
Texto
(2) Sumário Definição Declaração de ponteiros Inicialização de ponteiros Usos do * e & Operações com ponteiros Vetores e ponteiros Ponteiros e vetores multidimensionais Vetores de ponteiros Ponteiros de ponteiros.
(3) Definição.
(4) Introdução Para nós é facil de entender que: "a" é igual ao valor 5. "ch" é igual ao valor 'x'. "a" ou "ch" para o compilador são endereços de memória. São lugares de memória que contém, no caso de "a" um inteiro com valor 5 e no caso de "ch" um caractere com valor 'x'..
(5) O que é um ponteiro? Um ponteiro é uma variável que contém o endereço. de uma outra variável Toda variável declarada em um programa tem um endereço. de memória alocado para si e o número de posições de memória alocado depende do seu tipo. Ponteiros podem apontar (receber o endereço) para variáveis de qualquer um dos tipos disponíveis na linguagem. Ponteiros são importantes para: alocação dinâmica de memória, passagem de parâmetros para funções.
(6) O que é um ponteiro? As variáveis simples e arrays podem ser considerados. ponteiros cujo endereços são constantes e que indicam lugares na memória de dados. Funções podem ser considerados ponteiros que armazenam um endereço de memória de programa.
(7) O que é um ponteiro? Um ponteiro é uma variável que guarda um endereço de. memória de outro objeto. Esse endereço é a localização de outra variável na memória, embora ele possa ser o endereço de uma porta ou um endereço com propósito especial na RAM, como uma área auxiliar (buffer). Se uma variável contém o endereço de uma outra variável, a primeira é conhecida como um ponteiro para a segunda..
(8) Variáveis possuem nome, endereço e conteúdo #include <iostream> using namespace std; int dog, cat, bird, fish; void f(int pet) { printf("%d",pet); } int main() { int i, j, k; }.
(9) Declaração de ponteiros.
(10) Declaração de um Ponteiro:. *. Tipo_de_ponteiro *nome_da_variável; Int *valor1; Float *valorx; Char *valory;. Indica que a variável não armazena um valor, mas sim um endereço para o tipo especificado..
(11) A importância do & O operador endereço & é usado para indicar o endereço de. uma variável. Sempre que desejamos fazer um ponteiro apontar (receber o endereço) para uma variável temos que usar este operador.. Ponteiro = &variavelInteira;.
(12) Inicialização de ponteiros.
(13) Inicialização de um Ponteiro: ATENÇÃO: Todos ponteiros devem ser inicializados Ponteiro = &variável; Ponteiro = NULL; Main() { Memória HAM Int valor1, *ponteiro; ENDEREÇO NOME CONTEÚDO valor1 = 25; 0000000001 valor1 25 0000000002 ponteiro 0000000001 ponteiro = &valor1; }.
(14) Usos do * • Multiplicação;. *. • Declaração de ponteiro. • É interpretado como a declaração de uma. variável do tipo ponteiro; • Utilizado como operador de conteúdo. • Será interpretado como o conteúdo do endereço apontado pelo ponteiro;.
(15) Como alterar o conteúdo de uma variável através de um ponteiro? Main() { Int valor1 = 10,*ponteiro; printf(“valor1: %d\n”,valor1); Ponteiro = &valor1; *ponteiro = 15; printf(“valor1: %d\n”,valor1); }.
(16) Exercício 1: Na main() crie uma variável chamada num do tipo int com o. valor 10. Crie um ponteiro que aponte para a variável num; Crie uma função que receba o endereço da variável num e altere o valor para 15 através do uso de ponteiros; Na main() mostre o valor da variável num;.
(17) Exercício 2: Crie um programa que declare duas variáveis (inteiro e real). atribua valores para elas e crie dois ponteiros, cada um apontando para uma destas variáveis. Mostre na tela: O valor e o endereço de memória das variáveis, o valor do ponteiro, o endereço do ponteiro e o valor apontado pelo ponteiro..
(18) Operações com ponteiros.
(19) Operações com ponteiros Atribuição de ponteiros: Como qualquer variável, um ponteiro pode ser usado no lado direito de uma declaração para atribuir seu valor para um outro ponteiro. Por exemplo: #include <stdio.h> void main(){ int x; int *p1, *p2; x = 101; p1 = &x; p2 = p1; printf(“Endereço da variavel: %p “, p2); //imprime o endereço de x printf(“Valor da variável: %d”, *p2); //imprime o valor de x }.
(20) Operações com ponteiros: É possível realizar adição e subtração sobre ponteiros. buscando-se endereços de memória (apontando-se para valores) que estejam acima (adição) ou abaixo (subtração) do endereço atual contido no ponteiro. Por exemplo, para um ponteiro de nome p, a operação p++ faz com que p passe a apontar para o próximo elemento, qualquer que seja o tipo de objeto para o qual p aponta. Já p += i (p = p + i), faz com que p passe a apontar i elementos além (acima) do objeto para o qual p aponta atualmente..
(21) Operações com ponteiros Incremento:. p++; Decremento: p--; Adição: p = p+2; Subtração: p = p – 2;. Atenção: Se um ponteiro para um inteiro for incrementado, ele passa a apontar para o próximo inteiro..
(22) Operações com ponteiros Exercício:. Crie uma variável int e atribua um valor qualquer; Crie um ponteiro que aponte para esta variável; Utilizando ponteiros, imprima na tela o valor contido na variável. Imprima os conteúdos das próximas 1000 posições inteiras na memória..
(23) Operações com ponteiros Comparação entre ponteiros:. ==. != Compara se os ponteiros são iguais ou diferentes. >, <, <=, >= Compara qual ponteiro aponta para a posição mais alta na memória.
(24) Operações com ponteiros Exercício:. Crie duas variáveis inteiras, crie dois ponteiros que apontem para as variáveis anteriores. Compare os dois ponteiros e mostre na tela qual ponteiro está mais a “adiante” na memória..
(25) Ponteiros e vetores.
(26) Ponteiros e vetores A forma de acesso a vetores, vista anteriormente,. usava um índice para acessar cada elemento do vetor. vetores unidimensionais – vetorx[3];. COMO O NOME DE UM VETOR É, NA REALIDADE,. UM PONTEIRO PARA O PRIMEIRO ELEMENTO DO VETOR DECLARADO, pode-se usar este nome (ponteiro) como uma forma de acesso alternativa e mais ágil que a usual (via índices)..
(27) Ponteiros e vetores Para acessar o primeiro elemento de um vetor de nome valores: elem = valores[0]; ou elem = *valores;. Para acessar o segundo elemento: elem = valores[1]; ou elem = *(valores + 1);.
(28) Ponteiros e vetores.
(29) Ponteiros e vetores Exercício:. Crie um vetor de 10 posições, utilizando a maneira vista anteriormente de acessar ponteiros, adicione valores digitados pelo usuário em cada posição do vetor, logo, utilizando o mesmo método, exiba seu conteúdo na tela..
(30) Ponteiros e vetores char str[80], *p1; p1 = str; p1 foi associado ao endereço do primeiro elemento da matriz em str. Na linguagem C, um nome de matriz sem um índice é o endereço para o começo da matriz. O mesmo resultado, um ponteiro para o primeiro elemento da matriz str, pode ser gerado com a declaração abaixo: p1 = &str[0];.
(31) Ponteiros e vetores Se você desejar acessar o 5º elemento de um vetor pode ser. feito das seguintes maneiras:. str[4]; Ou Frequentemente o uso de aritmética é mais rápido do que o uso de indexação. *(p1+4).
(32) O COMPILADOR C AUTOMATICAMENTE RECONHECE O TIPO BÁSICO DO PONTEIRO E PULA A QUANTIDADE DE ENDEREÇOS RESPECTIVOS.. main () { int *ponteiro, vetor_inteiros[4] = {0, 10, 20, 30}; ponteiro = &vetor_inteiros[0]; printf(“Valor apontado: %d \n”, *(ponteiro+2) ); }.
(33) O COMPILADOR C AUTOMATICAMENTE RECONHECE O TIPO BÁSICO DO PONTEIRO E PULA A QUANTIDADE DE ENDEREÇOS RESPECTIVOS.. main () { int *ponteiro, vetor_inteiros[4] = {0, 10, 20, 30}; ponteiro = &vetor_inteiros[0]; ponteiro += 2; /* igual a: ponteiro = &vetor_inteiros[2]; */ printf(“Valor apontado: %d \n”, *ponteiro); }.
(34) Ponteiros e vetores: Exercício: Na main(), crie um vetor chamado v1 com 10 posições; Crie uma função que receba v1 e atribua em todas as posições do vetor valores recebidos do teclado (utilizando ponteiros); Crie funções ( sempre usando ponteiros) para informar ao usuário: 1. o maior valor no vetor; 2. o menor valor no vetor; 3. o valor médio armazenado no vetor; 4. e o número de valores negativos no vetor..
(35) Ponteiros e vetores Obtendo o endereço de um elemento da matriz:. É possível atribuir o endereço de um elemento específico de um vetor aplicando-se o operador & para o vetor indexado. p = &x[2];.
(36) Ponteiros e vetores: Essa declaração é especialmente útil para encontrar uma. substring. O programa abaixo imprimirá o restante de uma string, que é inserida pelo teclado, a partir do primeiro espaço é encontrado. #include <stdio.h> void main() { char s[80]; char *p; int i; printf(“digite uma string: ”); gets(s); //encontra o primeiro espaço ou o fim da string for (i = 0; s[i] && s[i]!=' '; i++); p = &s[i]; printf(p); }.
(37) Ponteiros e vetores multidimensionais.
(38) Ponteiros e matrizes Acessar vetores multidimensionais (matrizes) é de forma. semelhante a acessar vetores de uma só dimensão. [0][0]. [0][1]. [0][2]. [0][3]. [1][0]. [1][1]. [1][2]. [1][3]. [2][0]. [2][1]. [2][2]. [2][3]. [0][0] [0][1] [0][2] [0][3] [1][0] [1][1] [1][2] [1][3] [2][0] [2][1] [2][2] [2][3]. 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
(39) Ponteiros e matrizes 0. 1. 2. 3. 4. *(pt+1) -> vet[0][0] *(pt+2) -> vet[0][1] *(pt+3) -> vet[0][2] *(pt+4) -> vet[1][0] *(pt+5) -> vet[1][1] *(pt+6) -> vet[1][2] *(pt+7) -> vet[2][0] .... 5. 6. 7. 8. 9. 10. 11. [0][0]. [0][1]. [0][2]. [0][3]. [1][0]. [1][1]. [1][2]. [1][3]. [2][0]. [2][1]. [2][2]. [2][3].
(40) Ponteiros e matrizes Exercício: Declare na main() uma matriz 10x10 do tipo int Crie uma função que acrescente valores múltiplos de 10 em. todas as posições da matriz utilizando ponteiros Crie uma função que exiba a matriz, utilizando ponteiros.
(41) Vetores de ponteiros.
(42) Vetores de ponteiros Podem existir vetores de ponteiros:. A declaração para uma matriz de ponteiros, do tipo int, de tamanho 10 é: int *x[10]; Para atribuir o endereço de uma variável ponteiro chamada var ao terceiro elemento da matriz de ponteiros, você deve escrever: x[2] = &var; Para encontrar o valor de var, você deve escrever: *x[2];.
(43) Vetores de ponteiros Exercício: Crie um vetor de 10 posições do tipo int que será lido pelo. teclado. Crie um vetor de 10 posições do tipo ponteiro que guardará em cada posição, um endereço do vetor anterior. Através do uso de vetores, imprima cada valor na tela.
(44) Ponteiros para ponteiros.
(45) Ponteiros para ponteiros no caso de um ponteiro normal, o valor de um ponteiro é o. endereço da variável que contém o valor desejado. No caso de um ponteiro para um ponteiro, o primeiro ponteiro contém o endereço do segundo ponteiro que aponta para uma variável com o valor desejado:.
(46) Ponteiros para ponteiros Uma variável que é um ponteiro para um ponteiro deve ser. declarada como tal. Isso é feito colocando-se um asterisco adicional na frente do seu nome. Por exemplo, esta declaração diz ao compilador que novobalanço é um ponteiro para um ponteiro do tipo float: float **novobalanço;.
(47) Ponteiros para ponteiros Para acessar o valor desejado apontado indiretamente por um. ponteiro para um ponteiro usa-se duas vezes o * #include <stdio.h> void main(){ int x, *p, **q; x = 10; p = &x; q = &p; printf(“%d”, **q); //imprime o valor de x }.
(48) Ponteiros para ponteiros Exercício: Crie um programa que tenha uma variável valor=5; Crie um ponteiro chamado pt1 que aponte para valor; Crie um ponteiro chamado pt2 que aponte para o ponteiro pt1; Crie um ponteiro chamado pt3 que aponte para o ponteiro pt2; Imprima e compare as diferenças entre: valor; &valor; &pt1; pt1; *pt1; &pt2; pt2; *pt2; **pt2; &pt3; pt3; *pt3; **pt3; ***pt3;.
(49)
(50)
Documentos relacionados
Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição
Este artigo está dividido em três partes: na primeira parte descrevo de forma sumária sobre a importância do museu como instrumento para construção do conhecimento, destaco
O termo extrusão do núcleo pulposo aguda e não compressiva (Enpanc) é usado aqui, pois descreve as principais características da doença e ajuda a
Para Piaget, a forma de raciocinar e de aprender da criança passa por estágios. Por volta dos dois anos, ela evolui do estágio sensório motor, em que a ação envolve os
A decisão por uma revista bilíngüe para o Cone Sul, também remete à união entre as populações que o compõem. Os idiomas espanhol e português são os escolhidos, já que são
São considerados custos e despesas ambientais, o valor dos insumos, mão- de-obra, amortização de equipamentos e instalações necessários ao processo de preservação, proteção
Visto que o Código de Defesa do Consumidor – CDC (Lei nº 8.078/1990), em seu artigo 4º, traz como objetivo “o atendimento das necessidades dos consumidores, o respeito à
A interação da educação com a tecnologia forja um verdadeiro “saber”- de práticas e de vida (BASTOS, 1997). A problemática abordada nesta pesquisa está relacionada ao mau