C++ Permutation Des Pointeurs

Je suis en train de travailler sur une fonction de swap pointeurs et je ne peux pas comprendre pourquoi cela ne fonctionne pas. Quand j'imprime r et s dans la fonction d'échange les valeurs sont inversées, ce qui m'amène à croire que je suis la manipulation d'une copie de ce que je ne comprends pas parce que je passe par référence de p et de q.

void swap(int *r, int *s)
{
    int *pSwap = r;
    r = s;
    s = pSwap;
    return;
}

int main()
{
    int p = 7;
    int q = 9;  
    swap(&p, &q);
    cout << "p = " << p << "q= " << q << endl;
    return 0;
}

Imprime: p = 7q = 9

  • Vous êtes à la manipulation des copies de pointeurs, pas les données qu'ils pointent. Il est plus facile de std::swap(p, q);. Ou, si la proposition fait en fait en, p :=: q; dans le futur.
  • Waaaat. Pouvez-vous lier à ladite proposition? (A la recherche des symboles est dur.)
  • Oui, bien sûr. Voici. J'avais de grands doutes que ça à faire.
  • Désolé, je suis nouveau essayer de l'apprendre, comment suis-je la manipulation des copies si je suis passé par référence?
  • Merci. Très cool.
  • Les pointeurs sont eux-mêmes des copies et vous êtes à la permutation entre eux. Vous avez besoin de déréférencement à obtenir ce qu'ils indiquent et échange.
  • Vous avez besoin de déréférencement de pointeurs. Mais c'est sujette à des erreurs, car ils pourraient être nulle, de sorte que vous devriez utiliser des références à la place. (Notez que vous ne sont pas, en fait, en passant rien de référence. Vous êtes à la transmission de valeurs, qui se produisent à des pointeurs.)
  • Merci, de sens maintenant.

InformationsquelleAutor M K | 2013-03-28