Ir para conteúdo
Entre para seguir isso  
Dark Skyllen

#7~2 - Ponteiros

Recommended Posts

Dark Skyllen    7
Dark Skyllen

Aula 7

pt 2

 

 

Usando ponteiros

 

  • Ponteiros para ponteiros

Uma variavel ponteiro pode apontar para qualquer tipo de variavel, ou seja, como ponteiros são um tipo de variável, podemos apontar para eles.

 

#include <iostream.h>

int main(void)
{
 int var = 10;
 int* pVar = &var;
 int** ppVar = &pVar;

 cout << &var << endl
      << pVar << endl
      << ppVar  << endl;

      system("pause");
 return 0;


}

Se fizer isso verá que pVar aponta para o endereço de var e que ppVar aponta para o endereço de pVar. Agora modifique o programa da seguinte forma:

 


cout << &var << endl
<< pVar << endl
<< *ppVar << endl;

Verá que pVar e ppVar estão apontado para o endereço de var. E assim sucessivamente. Com isso se alterarmos algum valor em *ppVar alterara também em pVar e em var.

 

 

  • Ponteiros para Structs:

 

Como em structs temos diferentes tipos de dados de diferentes nomes, temos de acessá-los separadamente usando um ponto. Ex: jose.nome = 10;

Quando usamos um ponteiro para struc usamos o simbolo (aponta-para) ->:

 


#include <iostream.h>

using namespace std;

struct cliente
{
string nome;
int saldo;
};

void alteraNome(cliente*);
void exibeCliente(cliente*);

int main(void)
{
cliente guilherme = {"Guilherme", 145};
exibeCliente(&guilherme);
alteraNome(&guilherme);
exibeCliente(&guilherme);
system("pause");

}

void alteraNome(cliente* Cliente)
{
Cliente->nome = "Alterado via ponteiros";
}

void exibeCliente(cliente* Cliente)
{
cout << "Nome do cliente: " << Cliente->nome << endl
<< "Saldo do cliente: " << Cliente->saldo << endl;
}


Isso resolve o problema da aulas de structs onde não conseguiámos alterar o um valor do membro struct. Com o ponteiro, passamos o endereço de memória e ele altera diretamente no endereço de memória! OiaeuMae

 

Essa aula foi simples, mas só foi pra explicar mais alguns conceitos de ponteiros!

 

Até a próxima aula,

Dark Skyllen

 

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
esau    0
esau

Embora as aulas sejam simples, me ajudou um pouco.

 

otima aula kra, não bastava so um thanks pra agradecer ;p

 

Ainda tem mais aulas?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Dark Skyllen    7
Dark Skyllen
Embora as aulas sejam simples, me ajudou um pouco.

 

otima aula kra, não bastava so um thanks pra agradecer ;p

 

Ainda tem mais aulas?

 

Sim, são simples. Na verdade essa aula ficou muito curta mesma, porquê, na verdade, eu queria fazer uma aula mais complexa na parte 2, o que não ocorreu. Depois lembrei que precisava passar matrizes e vetores pra isso.

 

Sim, tem mais aulas.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Raweng    0
Raweng
Uma variavel ponteiro pode apontar para qualquer tipo de variavel, ou seja, como ponteiros são um tipo de variável, podemos apontar para eles.

como assim mano

Compartilhar este post


Link para o post
Compartilhar em outros sites
Dark Skyllen    7
Dark Skyllen
como assim mano

 

A variável ponteiroA aponta para a ponteiroB e ponteiroB aponta para uma variavel qualquer, ou seja, ambas apontam para o mesmo endereço. Complicadinho né? :coolface:

Compartilhar este post


Link para o post
Compartilhar em outros sites
dragonlorde    0
dragonlorde

Esse ponteiro em struct funcionaria que nem algo assim de lua:

local cliente = {['cliente']='Dark Skyllen',['saldo']=10}
print('Nome do cliente: '..cliente.cliente..'\nSaldo do cliente: '..cliente.saldo)

Eu imagino que é mesma coisa...

 

Alias o struct é 1 vetor ou não?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Dark Skyllen    7
Dark Skyllen
Esse ponteiro em struct funcionaria que nem algo assim de lua:

local cliente = {['cliente']='Dark Skyllen',['saldo']=10}
print('Nome do cliente: '..cliente.cliente..'\nSaldo do cliente: '..cliente.saldo)

Eu imagino que é mesma coisa...

 

Alias o struct é 1 vetor ou não?

 

Sim, são uma espécie de vetores que podem agrupar dados de diferentes tipos.

Compartilhar este post


Link para o post
Compartilhar em outros sites
dragonlorde    0
dragonlorde

Eu so entendi ponteiros quando voce falou do struct...

Obrigado pelas suas aulas ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites
Lhg    0
Lhg

Olá, qual seria a diferença destas formas de declarações:

int* ponteiro1;

int *ponteiro2;

 

outra coisa, já vi em muitos códigos a seguinte situação

if (( (AtribArq->dwFileAttributes == FILE_ATTRIBUTE_ARCHIVE)

O que estaria acontecendo neste conceito de "->"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
Entre para seguir isso  

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×