Buscar

Aula 6

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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);
}

Outros materiais