Différence entre les arguments de la fonction déclarée avec & et * en C++

J'ai tapé l'exemple suivant:

#include <iostream>
double f(double* x, double* y)
{
    std::cout << "val x: " << *x << "\n";
    std::cout << "val y: " << *y << "\n";
    return *x * *y;
}
double f2(double &x, double &y)
{
    std::cout << "val x: " << x << "\n";
    std::cout << "val y: " << y << "\n";
    return x * y;
}
int main()
{
    double a, b;
    a = 2;
    b = 3; 
    std::cout << f(&a, &b) << "\n";
    std::cout << f2(a, b) << "\n";
    return 0;
}   

Dans la fonction f je déclare x et y comme des pointeurs de qui je peux obtenir la valeur en utilisant *x. Lors de l'appel de f j'ai besoin de passer l'adresse de mon passé arguments, c'est pourquoi je passe &a, &b. f2 est le même à l'exception de la définition est différente.

Maintenant, ma question est: Sont-ils vraiment la même chose concernant la gestion de la mémoire? Les deux ne font aucune copie de la valeur passée mais au lieu de passer une référence?
Je me demande sur f2 parce que je ne pouvais pas lire l'adresse de x dans f2 donc je savoir plus à propos de x et y dans f (là, je sais, adresse ET valeur).

Merci d'avance!

Modifier: Ok merci, après avoir fait un peu plus de recherche, j'ai trouvé un très utile sujet:

Pointeur vs Référence
Il y a également un lien vers google directives de codage http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Reference_Arguments qui est tout à fait useful je me sens (ce que j'ai compris maintenant, c'est une forme de l'objet goût) pour faire plus de clair

  • Ce n'est pas C, c'est le C++.
  • Ah je vois, donc en C, j'ai toujours utiliser des pointeurs, ok merci! Ne le savais pas jusqu'à présent!
  • >Google guide de style - l'éviter. Il était dépassé en 2008 (date de aswer), et c'est encore pire aujourd'hui.
  • Ok merci pour les informer!
  • éviter laquelle? le " f " du style ou de la 'f2' style?
  • Éviter les Google Guide de Style. Il est tout à fait obsolète.

InformationsquelleAutor tim | 2011-04-28