Jump to content
Sign in to follow this  
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

 

 

 

 

 

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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:

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites
dragonlorde    0
dragonlorde

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

Obrigado pelas suas aulas ;)

Share this post


Link to post
Share on other 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 "->"

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×