Ir ao conteúdo
  • Cadastre-se

Dúvida em relação a ponteiros em c++


Visitante
Ir à solução Resolvido por dontpanic,

Posts recomendados

Faça uma função cujo tipo de retorno seja void, o nome seja swap, e ue receba dois ponteiros como parâmetros. A função deve inverter os dois valores recebidos, fazendo receber o valor do outro.

 

Eu não entendi bem esse exercício! Da uma olhada no meu código, eu estou aprendendo ponteiros e funções agora e eu sei q o meu código esta todo errado! Ahh... eu não entendi esse lance do swap!

 

 

#include <iostream>

using namespace std;

void swap(int &a, int &b, int x){
    x=a;
    a=b;
    b=x;
    return swap;
}

int main()
{

    int a=10, b=20, x=0;
    swap(a, b );
    cout<<a<<" "<<b<<endl;
    return 0;
}
 

 

 

Link para o comentário
Compartilhar em outros sites

  • Solução

Um int guarda inteiros, certos? 1, 2, 3, 4, etc...

Um float guarda números reais. 0.239, 1.5, 3.14, etc...

Um ponteiro guarda endereços da memória.

 

Por exemplo:

int main() {    int x;    int y;    return 0;}
 

Nesse código acima, quando esse programa for executado ele vai pedir ao sistema operacional pra reservar uma parte da memória RAM pra variável x e y.

 

Sua memória ram:

[foto de mulher pelada] [0] [0] [0] [0] [email] [0] [0] [0][0] [0] [0] [0] [x] [0] [0] [firefox  ] [0] [0] [0] [y] [0][0] [0] [0] ...
Como tem sempre alguma coisa acontecendo no seu sistema operacional e na memória ram, ela precisa ser subdividida em endereços, pros programas serem capazes de acessar as informações gravadas lá.

Digamos que no exemplo acima, "foto de mulher pelada" esteja no endereço 0x00 (zero), "email" esteja no endereço 0x0E, "x" esteja no endereço 0x18 e "y" no endereço 0x20.

Daí você muda seu programa agora:

int main() {    int x;    int y;    int *px;    int *py;    px = &x;    py = &y;    return 0;}
Esse operador "&" significa que em vez de pegar o valor de uma variável, eu estou pegando o endereço dela na memória.

Então "px" vai ser igual a 0x18, que é o endereço de x... E "py" vai ser igual a 0x20, que é o endereço de y.

O que o exercício pede é que você crie uma função inverta os endereços dessas duas variáveis, de modo que px fique igual a 0x20 e py igual a 0x18.

 

#include <iostream>using namespace std;void swap(int* &a, int* & {    int* t;    t = a;    a = b;    b = t;}int main() {    int x = 10;    int y = 20;    int* px = &x; // px guardando o endereço de x, *px = 10    int* py = &y; // py guardando o endereço de y, *py = 20    cout << "px: " << *px << endl;    cout << "py: " << *py << endl;    swap( px, py );    cout << "px: " << *px << endl;    cout << "py: " << *py << endl;    return 0;}
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!