Baixe o app para aproveitar ainda mais
Prévia do material em texto
Laboratório de Programação de Computadores II Pontifícia Universidade Católica de Minas Gerais Computadores II Aula 6 Prof. Lucas Schmidt Linguagem C/C++ Documentos auxiliares: Manual C-C++ Curso Linguagem C-C++ UFMGCurso Linguagem C-C++ UFMG Disponível no site para download: https://sites.google.com/site/proflucasscf Linguagem C/C++ • Ponteiros – Os ints guardam inteiros. Os floats guardam números de ponto flutuante. Os charsnúmeros de ponto flutuante. Os chars guardam caracteres. O ponteiro nada mais é do que uma variável que guarda o endereço de uma outra variável. Linguagem C/C++ • Ponteiros – A declaração de ponteiros é feita da seguinte forma:forma: tipo_do_ponteiro *nome_da_variável; int *pt; – A instrução acima indica que pt é um ponteiro do tipo int. Linguagem C/C++ • Ponteiros – É o asterisco (*) que faz o compilador saber que aquela variável não vai guardar um valor que aquela variável não vai guardar um valor mas sim um endereço para aquele tipo especificado. – Após sua declaração, todo ponteiro deve ser inicializado (apontado para algum lugar conhecido) antes de ser usado! Linguagem C/C++ • Ponteiros – Para atribuir um valor a um ponteiro recém- criado poderíamos igualá-lo a um valor de criado poderíamos igualá-lo a um valor de memória. Como? int count = 10; int *pt; pt = &count; count = 10 pt Linguagem C/C++ • Ponteiros – Como nós colocamos um endereço em pt, ele agora pode ser usado. É possível alterar o agora pode ser usado. É possível alterar o valor de count através do pt, usando um operador "inverso" do &. É o operador *. Exemplo: *pt = count; count = 10 pt 10 Linguagem C/C++ • Ponteiros – Podemos também realizar operações lógicas com ponteiros. Neste caso, lógicas com ponteiros. Neste caso, comparamos ponteiros para verificar se os mesmos possuem o mesmo endereço de memória. Exemplo: if (p1 == p2) var p1 p2 =? Linguagem C/C++ • Exemplo (reproduza no compilador) #include <stdio.h> int main() { int a = 10; int *p1, *p2; p1 = &a; p2 = &a; if (p1 == p2) printf("Os ponteiros possuem o mesmo endereco"); } Linguagem C/C++ • Ponteiros – Podemos também fazer algumas operações aritméticas com ponteiros. Podemos fazer aritméticas com ponteiros. Podemos fazer com que p1 aponte para p2 fazendo p1 = p2. Se queremos fazer com que o valor da variável que aponta para p1 tenha o mesmo valor de p2, fazemos *p1 = *p2. Linguagem C/C++ • Exemplo (reproduza no compilador) #include <stdio.h> int main() { int a, b, c;int a, b, c; int *pta, *ptb, *ptc; a = 1; b = 2; c = 3; pta = &a; ptb = &b; ptc = &c; *pta = c; printf("\nO endereço de a e: %d", pta); printf("\nO endereço de b e: %d", ptb); printf("\nO endereço de c e: %d", ptc); Linguagem C/C++ • Exemplo (reproduza no compilador) printf("\n\nO valor de a e: %d", *pta); printf("\nO valor de b e: %d", *ptb); printf("\nO valor de c e: %d", *ptc); // Alterar o valor de a, b, c através de ponteiros// Alterar o valor de a, b, c através de ponteiros printf("\n\nApos alterar os valores...:"); *pta = 4; *ptb = 5; *ptc = 6; printf("\nO valor de a e: %d", a); printf("\nO valor de b e: %d", b); printf("\nO valor de c e: %d", c); Linguagem C/C++ • Exemplo (reproduza no compilador) pta = ptc; ptc = ptb; printf("\n\nO valor de a e: %d", a); printf("\nO valor de b e: %d", b);printf("\nO valor de b e: %d", b); printf("\nO valor de c e: %d", c); printf("\n\nO valor de a e: %d", *pta); printf("\nO valor de b e: %d", *ptb); printf("\nO valor de c e: %d", *ptc); } Linguagem C/C++ • Ponteiros – Internamente os vetores utilizam ponteiros. Neste caso, é possível manipular vetores ou Neste caso, é possível manipular vetores ou valores dos vetores usando ponteiros. Para isso, podemos fazer: int vet[5] = {2, 20, 200, 2000, 20000}; int *pt; pt = &vet; Linguagem C/C++ • Ponteiros – Incremento / decremento de valores: (*pt)++ ou (*pt)—(*pt)++ ou (*pt)— – ou para manipular os vetores: pt++ ou pt-- Linguagem C/C++ • Exemplo (reproduza no compilador) #include <stdio.h> int main() { int vet[5] = {2, 20, 200, 2000, 20000}; int *pt; pt = vet; printf("\nO valor do ponteiro e: %d", *pt); printf("\nO valor do ponteiro e: %d", *(++pt)); printf("\nO valor do ponteiro e: %d", *(++pt)); printf("\nO valor do ponteiro e: %d", *(++pt)); printf("\nO valor do ponteiro e: %d", *(--pt)); Linguagem C/C++ • Exemplo (reproduza no compilador) pt = vet; printf("\nO valor do ponteiro e: %d", *pt); vet[1] = 30;vet[1] = 30; printf("\nO valor do ponteiro e: %d", *(++pt)); printf("\nO valor do ponteiro e: %d", *(++pt)); } Linguagem C/C++ • Ponteiros – Em um função também podemos passar parâmetros como referência utilizando parâmetros como referência utilizando ponteiros. Linguagem C/C++ • Exemplo (reproduza no compilador) #include <stdio.h> int troca (int *x, int *y) { int aux;int aux; aux = *x; *x = *y; *y = aux; } int main() { int a, b; a = 10; b = 20; troca(&a, &b); printf("%d %d", a, b); }
Compartilhar