programação estruturada 2 - aula 05
TRANSCRIPT
![Page 1: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/1.jpg)
Programação Estruturada II
Aula 05 – Ponteiros
Prof. Thomás da [email protected]
Anhanguera – 2015.1
![Page 2: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/2.jpg)
Ponteiros
PONTEIROS
Prof. Thomás da Costa Programação Estruturada II
![Page 3: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/3.jpg)
Ponteiros
O que é:
É um tipo de variável que armazena um endereço de memoria referente a umaoutra variável. O ponteiro não armazena diretamente um valor como os outrostipos em C++.
Ponteiros
Prof. Thomás da Costa Programação Estruturada II
![Page 4: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/4.jpg)
Ponteiros
Mais detalhes:
- O entendimento de ponteiros é complexo- São utilizados quando desejamos passar vetores como parâmetros da função- É utilizado em passagem de parâmetros por referência- Quando desejamos alocar e desalocar memória manualmente- Em vetores do tipo char- Criar estruturas complexas, como lista encadeadas e árvores binárias- Atuar com desenvolvimento de aplicações complexas
Ponteiros
Prof. Thomás da Costa Programação Estruturada II
![Page 5: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/5.jpg)
Ponteiros
Operadores:
Para operação com ponteiros, utilizamos dois operadores unários:
Ponteiros
Prof. Thomás da Costa Programação Estruturada II
Operador Descrição
* Utilizado para declarar um ponteiro e para retornar o valor
& Utilizado para retornar o endereço de memória da variável
Vamos ver como declarar uma variável do tipo ponteiro !!!
![Page 6: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/6.jpg)
Ponteiros
Ponteiros
Prof. Thomás da Costa Programação Estruturada II
Declarando uma variável do tipo ponteiro:
int *ptr;
Tipo da variável
Nome da variável
Operador unário
![Page 7: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/7.jpg)
Prof. Thomás da Costa Programação Estruturada II
Exemplo 1#include <iostream>
using namespace std;
int main()
{
int *ptr;
cout << ptr << endl;
}
Declarando um ponteiro
Exibe o endereço da variável, neste caso,nenhum endereço foi atribuído
![Page 8: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/8.jpg)
Ponteiros
Ponteiros
Prof. Thomás da Costa Programação Estruturada II
Declaração e atribuição de ponteiros:
Variável ponteiro
Atribuindo o endereço dememória
int *ptr;
int valor;
valor = 1500;
ptr = &valor;
![Page 9: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/9.jpg)
Prof. Thomás da Costa Programação Estruturada II
Exemplo 2
#include <iostream>
using namespace std;
int main()
{
int valor;
int *ptr;
valor = 1500;
ptr = &valor;
cout << ptr << endl;
cout << *ptr << endl;
}
ptrvalor
0x23fe480x23fe44
0x23fe480x23fe44 0x23fe441500
![Page 10: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/10.jpg)
Ponteiros
Ponteiros
Prof. Thomás da Costa Programação Estruturada II
Mais detalhes:
- Ponteiro armazena o endereço de memória- O operador & mostra o endereço da variável- O operador * é utilizado na declaração do ponteiro- Exibindo o valor de um ponteiro com cout é mostrado o
endereço referenciado- Utilizando o operador * seguido pelo nome da variável
de ponteiro é exibido o valor atribuído no endereço dememória referente.
Vamos ver mais um exemplo !!!
![Page 11: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/11.jpg)
Prof. Thomás da Costa Programação Estruturada II
Exemplo 3
#include <iostream>
using namespace std;
int main()
{
int valor;
int *ptr;
int total;
valor = 1600;
ptr = &valor;
total = *ptr;
cout << *ptr << endl;
cout << total << endl;
}
ptrvalor
0x23fe480x23fe44
total
0x23fe40
0x23fe480x23fe44 0x23fe401600 0x23fe44 1600
![Page 12: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/12.jpg)
Ponteiros
Importante:
A atribuição de valores para ponteiros, deve ser do mesmo tipo. Quando asvariáveis são de tipos diferentes, vamos ter um erro de compilação.
Ponteiros
Prof. Thomás da Costa Programação Estruturada II
![Page 13: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/13.jpg)
Prof. Thomás da Costa Programação Estruturada II
Exemplo 4
#include <iostream>
using namespace std;
int main()
{
// PROGRAMA COM ERRO NAO COMPILA !!!!
int *ptr_inteiro;
double valor;
valor = 345.76;
ptr_inteiro = &valor;
cout << *ptr_inteiro << endl;
}
ERRO !!!
![Page 14: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/14.jpg)
Ponteiros
Conversão de valores:
Para atribuir ponteiros de tipos diferentes, utilizamos um conceito chamado cast.O cast de variáveis ocorre em tipos similares. Neste processo as variáveis de umtipo são convertido em outro tipo. Muitas vezes esta conversão não ocorre 100%conforme o esperado.
Ponteiros
Prof. Thomás da Costa Programação Estruturada II
![Page 15: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/15.jpg)
Ponteiros
Ponteiros
Prof. Thomás da Costa Programação Estruturada II
Conversão de valores:
int *ptr_inteiro;
double valor;
ptr_inteiro = (int *)&valor;
Conversão de valores
![Page 16: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/16.jpg)
Ponteiros
Conversão de valores:
Temos um pequeno problema quando existe a conversão de ponteiros de tiposdiferentes. Vamos ver no próximo exemplo.
Ponteiros
Prof. Thomás da Costa Programação Estruturada II
![Page 17: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/17.jpg)
Prof. Thomás da Costa Programação Estruturada II
Exemplo 5
#include <iostream>
using namespace std;
int main()
{
double valor;
int *ptr_inteiro;
valor = 345.76;
ptr_inteiro = (int *)&valor;
cout << *ptr_inteiro << endl;
}
ptr_inteirovalor
0x23fe480x23fe40
0x23fe40345.76 0x23fe480x23fe40
Valor exibido: -171798692
Valor incorreto exibido pelo ponteiro !!!
![Page 18: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/18.jpg)
Prof. Thomás da Costa Programação Estruturada II
Exemplo 6
#include <iostream>
using namespace std;
int main(){
int *ptr_inteiro;double valor_1;double valor_2;
valor_1 = 345.76;ptr_inteiro = (int *)&valor_1;valor_2 = *ptr_inteiro;
cout << valor_1 << endl;cout << *ptr_inteiro << endl;cout << valor_2 << endl;
}
São exibidos valores errados
Conversão não funciona completamente
![Page 19: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/19.jpg)
Ponteiros
Atribuição de valores:
Podemos atribuir um valor diretamente para um ponteiro. Para isso utilizamos ooperador * antes do nome da variável do tipo ponteiro.
Ponteiros
Prof. Thomás da Costa Programação Estruturada II
*ptr = 999;
Variável do tipo ponteiro
Atribuindo um valor
![Page 20: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/20.jpg)
Prof. Thomás da Costa Programação Estruturada II
Exemplo 7
#include <iostream>
using namespace std;
int main(){
int *ptr;int x;
ptr = &x;*ptr = 999;
cout << &x << endl;cout << ptr << endl;cout << *ptr << endl;
}
xptr
0x23fe440x23fe48
0x23fe48 0x23fe440x23fe44 999
![Page 21: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/21.jpg)
Ponteiros
Operação com ponteiros:
Em ponteiros, possuímos operações de incremento e decremento, tanto paravalores como para o endereço do ponteiro.
Ponteiros
Prof. Thomás da Costa Programação Estruturada II
Operador Descrição
++ Incrementa um valor ou o endereço do ponteiro
-- Decrementa um valor ou o endereço do ponteiro
Quando o valor de um endereço de ponteiro é incrementado ou decrementado, aoperação sempre irá acontecer utilizando o tamanho do tipo da variável. Porexemplo: se uma variável for do tipo inteiro, o ponteiro será incrementado edecrementado de 4 em 4.
![Page 22: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/22.jpg)
Ponteiros
Como incrementar e decrementar um ponteiro:
No exemplo abaixo, a posição de memória será incrementada e decrementada em4 posições de acordo com o tamanho da variável inteira.
Ponteiros
Prof. Thomás da Costa Programação Estruturada II
int *ptr;
ptr++;ptr--;
Incremento de ponteiro
Decremento de ponteiro
Somente o endereço do ponteiro atribuído na variável será
incrementado ou decrementado
![Page 23: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/23.jpg)
Ponteiros
Como incrementar e decrementar o valor de um ponteiro:
No exemplo abaixo, o valor de um ponteiro é incrementado e decrementado.
Ponteiros
Prof. Thomás da Costa Programação Estruturada II
int *ptr;
(*ptr)++;(*ptr)--;
Incremento do valor do ponteiro
Decremento do valor do ponteiro
O valor atribuído na posição de memória do ponteiro, será
incrementado ou decrementado
![Page 24: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/24.jpg)
Prof. Thomás da Costa Programação Estruturada II
Exemplo 8
#include <iostream>
using namespace std;
int main(){
int *ptr;int x;
ptr = &x;*ptr = 999;
cout << "Valor Original:" << ptr << endl;
ptr++;cout << "Incremento:" << ptr << endl;
ptr--;cout << "Decremento:" << ptr << endl;
(*ptr)++;cout << "Inc. valor:" << *ptr << endl;
(*ptr)--;cout << "Dec. valor:" << *ptr << endl;
}
Este programa efetua operações com ponteiros. Vamos analisar com mais detalhes. Para isso iremos ocultar as
linhas de cout, pois não afetam o nosso código
![Page 25: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/25.jpg)
Prof. Thomás da Costa Programação Estruturada II
Exemplo 8
#include <iostream>
using namespace std;
int main(){
int *ptr;int x;
ptr = &x;*ptr = 999;
ptr++;ptr--;(*ptr)++;(*ptr)--;
}
ptr
0x23fe38
x
0x23fe34
0x23fe380x23fe34 0x23fe34999
0x23fe380x23fe38 0x23fe34999
0x23fe380x23fe34 0x23fe34999
0x23fe380x23fe34 0x23fe341000
0x23fe380x23fe34 0x23fe34999
![Page 26: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/26.jpg)
Prof. Thomás da Costa Programação Estruturada II
Exemplo 9
#include <iostream>
using namespace std;
int main(){
double *ptr;double x;
ptr = &x;*ptr = 999.98;
cout << "Valor Original:" << ptr << endl;
ptr++;cout << "Incremento:" << ptr << endl;
ptr--;cout << "Decremento:" << ptr << endl;
(*ptr)++;cout << "Inc. valor:" << *ptr << endl;
(*ptr)--;cout << "Dec. valor:" << *ptr << endl;
}
Mesmo processo do programa anterior utilizando outro tipo de variável.
![Page 27: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/27.jpg)
Ponteiros
Comparação de Ponteiros:
Na comparação de ponteiros, utilizamos os operadores maior, menor e igual. Oresultado da comparação, indica se o endereço de ponteiro é igual, se está mais oumenos avançado que o endereço que está sendo comparado.
Ponteiros
Prof. Thomás da Costa Programação Estruturada II
![Page 28: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/28.jpg)
Prof. Thomás da Costa Programação Estruturada II
Exemplo 10
#include <iostream>
using namespace std;
int main(){
int *ptr_1;int *ptr_2;int x, y;
ptr_1 = &x;ptr_2 = &y;
cout << ptr_1 << endl;cout << ptr_2 << endl;
cout << (ptr_1 > ptr_2) << endl;cout << (ptr_1 < ptr_2) << endl;
ptr_1 = &x;ptr_2 = &x;
cout << (ptr_1 == ptr_2) << endl;}
Ponteiros são iguais
Comparação de ponteiros
![Page 29: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/29.jpg)
Ponteiros
Vetores:
Normalmente um vetor, pode ser representado diretamente por um ponteiro. Nocaso de um vetor de char, podemos efetuar atribuições diretamente, sem precisarrepresentá-los por posições de memórias. Isto é uma característica da linguagem edo compilador.
Ponteiros
Prof. Thomás da Costa Programação Estruturada II
![Page 30: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/30.jpg)
Prof. Thomás da Costa Programação Estruturada II
Exemplo 11
#include <iostream>#include <strings.h>
using namespace std;
int main(){
char valores[100];char *ptr;
strcpy(valores, "Isto é um teste");ptr = valores;
cout << valores << endl;cout << ptr << endl;
ptr = (char *)"Isto é um outro teste";cout << ptr << endl;
cout << valores[3] << endl;cout << *(ptr+3) << endl;
}
Exibindo valor na posição do vetor
![Page 31: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/31.jpg)
Ponteiros
Operadores bit-a-bit:
São operações que efetuamos diretamente com os bits de um tipo de dados. Paraisso, cada operador possui uma tabela verdade.
Ponteiros
Prof. Thomás da Costa Programação Estruturada II
Operador Descrição
& AND
| OR
^ OR Exclusivo (XOR)
~ Negação
>> Deslocamento de bit a direita
<< Deslocamento de bit a esquerda
![Page 32: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/32.jpg)
Ponteiros
Tabela verdade dos operadores bit-a-bit:
Ponteiros
Prof. Thomás da Costa Programação Estruturada II
p q p & q
0 0 0
0 1 0
1 0 0
1 1 1
Operador AND (&):
p q p | q
0 0 0
0 1 1
1 0 1
1 1 1
Operador OR(|):
p q p & q
0 0 0
0 1 1
1 0 1
1 1 0
Operador XOR(^):
O operador ~ (NOT), inverte o resultado, se for 0 se torna 1 e vice-versa. Osoperadores >> e <<, deslocam bit a esquerda e a direita.
![Page 33: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/33.jpg)
Prof. Thomás da Costa Programação Estruturada II
Exemplo 12
#include <iostream>#include <strings.h>#include <stdlib.h>
using namespace std;
int main(){
int *ptr_1, *ptr_2;int valor_1, valor_2;char valor_convertido[100];
ptr_1 = &valor_1;ptr_2 = &valor_2;
valor_1 = 316;valor_2 = 206;
*ptr_1 = *ptr_1 << 2;cout << *ptr_1 << endl;
*ptr_1 = *ptr_1 >> 2;cout << *ptr_1 << endl;
itoa(*ptr_1, valor_convertido, 2);cout << "Valor binário:" << valor_convertido << endl;
itoa(*ptr_2, valor_convertido, 2);cout << "Valor binário:" << valor_convertido << endl;
itoa(*ptr_2 & *ptr_1, valor_convertido, 2);cout << "Operador AND:" << valor_convertido << endl;
itoa(*ptr_2 | *ptr_1, valor_convertido, 2);cout << "Operador OR:" << valor_convertido << endl;
itoa(*ptr_2 ^ *ptr_1, valor_convertido, 2);cout << "Operador XOR:" << valor_convertido << endl;
itoa(~*ptr_2, valor_convertido, 2);cout << "Operador NEG:" << valor_convertido << endl;
}
Converte um número para uma base específica
![Page 34: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/34.jpg)
Ponteiros
Resumo:
- Um ponteiro armazena uma posição de memória- Esta posição de memória é referente a um valor- Atribuição de ponteiros deve acontecer se for do mesmo tipo- Podemos efetuar operação de incremento e decremento em ponteiros- Os operadores bit-a-bit são divididos em AND, OR, XOR, NOT- Os operadores << e >> representam deslocamento de bit a esquerda e a direita
Ponteiros
Prof. Thomás da Costa Programação Estruturada II
![Page 35: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/35.jpg)
Ponteiros
Lista Ligada Simples:
É uma lista de elementos ligados em sequência. Normalmente utilizamosestruturas para representar lista ligadas.
Ponteiros
Prof. Thomás da Costa Programação Estruturada II
![Page 36: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/36.jpg)
Ponteiros
Mais detalhes:
- São representados por estruturas- São estruturas dentro de estruturas encadeadas- A estrutura interna sempre é um ponteiro para outra estrutura- Sendo um ponteiro, indica o endereço da próxima estrutura- Vamos trabalhar com inserção no fim da lista encadeada- Utilizadas para armazenar valores na memória de fácil acesso
Lista Ligada Simples
Prof. Thomás da Costa Programação Estruturada II
![Page 37: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/37.jpg)
Ponteiros
Como funciona:
Um elemento de uma lista, possui o endereço do próximo. O último elemento dalista tem o valor NULL
Lista Ligada Simples
Prof. Thomás da Costa Programação Estruturada II
1 2 3
Elementos da lista ligada simples
Endereço de memória para o próximo elemento
![Page 38: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/38.jpg)
Ponteiros
Lista Ligada Simples
Prof. Thomás da Costa Programação Estruturada II
Exemplo:
Próximo elemento da listastruct alunos
{
char nome[100];
int idade;
alunos *proximo;
} *lista_alunos;
![Page 39: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/39.jpg)
Ponteiros
Lista Ligada Simples
Prof. Thomás da Costa Programação Estruturada II
Alocando memória:
Para o nosso exemplo vamos efetuar alocação dinâmica de memória utilizando apalavra reservada new.
Efetuando alocação de memória
alunos *novo_aluno = new alunos;
![Page 40: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/40.jpg)
Prof. Thomás da Costa Programação Estruturada II
Exemplo 13
Adicionando no final da lista
...alunos *novo_aluno = new alunos;
cout << "Digite o nome do aluno:" << endl;gets(novo_aluno->nome);
cout << "Digite a idade do aluno:" << endl;cin >> novo_aluno->idade;
novo_aluno->proximo = NULL;
if (lista_alunos == NULL)lista_alunos = novo_aluno;
else{
alunos *p;p = lista_alunos;
while (p->proximo != NULL)p = p->proximo;
p->proximo = novo_aluno;}
...
![Page 41: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/41.jpg)
...alunos *p;p = lista_alunos;
if (p->proximo == NULL) {
cout << "------------------------------------" << endl;cout << "Nome do Aluno:" << p->nome << endl;cout << "Idade do Aluno:" << p->idade << endl;cout << "------------------------------------" << endl;
}else{
while (p != NULL){
cout << "------------------------------------" << endl;cout << "Nome do Aluno:" << p->nome << endl;cout << "Idade do Aluno:" << p->idade << endl;cout << "------------------------------------" << endl;p = p->proximo;
}}
...
Prof. Thomás da Costa Programação Estruturada II
Exemplo 13
Percorrendo a lista ligada
![Page 42: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/42.jpg)
Ponteiros
Resumo:
Lembrando os itens do começo desse tópico:- São representados por estruturas- São estruturas dentro de estruturas encadeadas- A estrutura interna sempre é um ponteiro para outra estrutura- Sendo um ponteiro, indica o endereço da próxima estrutura- Utilizadas para armazenar valores na memória de fácil acesso
Lista Ligada Simples
Prof. Thomás da Costa Programação Estruturada II
![Page 43: Programação Estruturada 2 - Aula 05](https://reader033.vdocuments.pub/reader033/viewer/2022042522/55aee3411a28ab737d8b46cf/html5/thumbnails/43.jpg)
Ponteiros
Obrigado !!!
Prof. Thomás da Costa Programação Estruturada II