Baixe o app para aproveitar ainda mais
Prévia do material em texto
Ponteiros – parte 1 Lidiana de França Martins Introdução Um ponteiro é uma variável que contém um endereço de memória. Este endereço é normalmente a posição de uma outra variável na memória. Se x tiver o endereço de y, então é dito que x aponta para y. Declaração: tipo *nome; 2Técnicas de Programação - Lidiana de França Martins Introdução #include <iostream> #include<cstdlib> using namespace std; int main() { int v, *p; v = 2; p = &v; cout << "Valor de v: " << v << endl; cout << "Endereço de v: " << p << endl; cout << "Valor de v: " << *p << endl; system("PAUSE"); return 0; } 3Técnicas de Programação - Lidiana de França Martins Atribui a p o endereço de v Exibe o valor da variável apontada por p. O * obtém o valor armazenado no endereço que ele precede. O & obtém o endereço do objeto que ele precede. Atribuição de valores através de um ponteiro #include <iostream> #include<cstdlib> using namespace std; int main() { int v, *p; v = 1000; p = &v; cout << "Valor de v: " << *p << endl; *p = 2000; cout << "Novo valor de v: " << *p << endl; (*p)++; cout << "Valor de v após o incremento de 1: " << *p << endl; system("PAUSE"); return 0; } 4Técnicas de Programação - Lidiana de França Martins Aritmética de ponteiros #include <iostream> #include<cstdlib> using namespace std; int main() { float v = 9.8; float *p; p = &v; cout << "Valor de v: " << *p << endl; cout << "Endereço de v: " << p << endl; p++; cout << "Valor de p incrementado: " << p << endl; cout << "Valor da posição de memória agora apontada por p: " << *p; cout << endl; system("PAUSE"); return 0; } 5Técnicas de Programação - Lidiana de França Martins Há apenas 4 operadores aritméticos que podem ser usados em ponteiros: ++, --, + e - Ponteiros e arrays Há um relacionamento próximo entre ponteiros e arrays. Freqüentemente ponteiros e arrays são intercambiáveis. #include <iostream> #include<cstdlib> using namespace std; int main() { float *p, q[5]; int i; p = q; for(i = 0; i < 5; i++) cout << (int) (p+i) << endl; cout << endl; system("PAUSE"); return 0; } 6Técnicas de Programação - Lidiana de França Martins Ponteiros e arrays #include <iostream> //versão 1 #include <cstdlib> #include <cstring> using namespace std; int main() { char a[20], *s; gets(a); s = a; for(int i = 0; i < strlen(a); i++) cout << *(s + i); cout << endl; system("PAUSE"); return 0; } 7Técnicas de Programação - Lidiana de França Martins Acessando o valor de índice i Ponteiros e arrays #include <iostream> //versão 2 #include <cstdlib> #include <cstring> using namespace std; int main() { char a[20], *s; gets(a); s = a; for(int i = 0; i < strlen(a); i++) cout << s[i]; cout << endl; system("PAUSE"); return 0; } 8Técnicas de Programação - Lidiana de França Martins Indexando o ponteiro Ponteiros e arrays #include <iostream> //versão 3 #include <cstdlib> using namespace std; int main() { char a[20], *s; gets(a); s = a; for(int i = 0; s[i]; i++) cout << *(s + i); cout << endl; system("PAUSE"); return 0; } 9Técnicas de Programação - Lidiana de França Martins O laço continuará até ‘\0’ ser encontrado 10 Bibliografia recomendada C++ guia para iniciantes, Herbert Schildt, Editora Ciência Moderna, 2002. C++ guia de consulta rápida, Joel Saade, Novatec, 2004. C++ fundamentos e práticas, Herbert Schildt, Alta Books, 2004. C completo e total, Herbert Schildt, Makron Books, 1997. Técnicas de Programação - Lidiana de França Martins
Compartilhar