Le passage d'un tableau de structures par référence en C++

Donc je suis encore assez nouveau à la programmation/C++, et toujours essayer d'envelopper ma tête autour de pointeurs et passage par référence et tout et tout. Un programme que j'essaie de comprendre maintenant besoin de passer un tableau de structures à une autre fonction. J'ai obtenu ce travail en juste en passant le tableau directement là-bas. Il semble bien fonctionner. Cependant, ce qui m'inquiète c'est que je crois que je suis de passage par valeur, et je comprends que c'est mieux de passer par les structures de référence, de sorte que vous n'êtes pas de faire une copie de la structure à chaque fois...

De toute façon, voici un exemple de base de ce que je fais:

struct GoldenHelmet {
    int foo;
    string bar;
    };

void pass (GoldenHelmet ofMambrino[], int size);

int main () {
    GoldenHelmet ofMambrino[10];
    int size = sizeof(ofMambrino) / sizeof(ofMambrino[0]);
    ofMambrino[1].foo = 1;
    pass(ofMambrino, size);
    cout << ofMambrino[2].foo << endl;
    return 0;
}

void pass (GoldenHelmet ofMambrino[], int size) {
    ofMambrino[2].foo = 100;
    ofMambrino[2].bar = "Blargh";
}

De ce que je comprends, il fonctionne parce que les tableaux sont déjà pointeurs, non? Mais la façon dont je l'ai configuré, suis-je encore passer une copie de la structure et de tout le pass() la fonction? J'ai essayé de le passer par référence, mais il ne semble pas vouloir travailler toute façon j'ai essayé.

  • Les tableaux ne sont pas des pointeurs. Répétez cette opération pour vous jusqu'à ce que vous évanouir, puis revenir à ce site et de lire les réponses qui ont été affichés par puis.
  • Non, la réponse sera en C++ 🙂
  • SB Merci pour la clarification. J'ai lu ce post et il semble impliquer que les tableaux sont des pointeurs. Je suppose que j'ai besoin de garder à la recherche en elle. De toute façon, va lire les réponses maintenant, merci pour l'aide tout le monde.
  • Au lieu de lire, vous devez avoir lu l'article qui a prouvé hors de tout doute que vous devez m'envoyer tout de votre argent... de toute façon, ne croyez pas tout ce que vous entendez sur l'internet. En cas de doute, prendre un bon livre, ou par chèque dans la langue standard (gratuit à partir de GitHub) une fois que vous êtes à l'aise avec la langue.
  • Ce Kerrek essaie de dire, c'est que c'est un malentendu commun, et il y a beaucoup de malentendus fréquents lorsqu'il s'agit de l'apprentissage du C++. Mais le choix d'un des livres sur cette liste qui ont été approuvés et recommandés par des experts, vous ne pouvez pas vous tromper.
  • Je suis en train de faire un C++ cours, et avoir une vie décente livre sur elle ainsi. J'ai récemment commencé sur les pointeurs, donc je n'avais aucune raison de penser autrement. De toute façon, bon point, et je vais continuer à essayer d'en apprendre plus.
  • Avis personnel: Si vous êtes juste de commencer à apprendre le C++, vous ne devriez pas avoir des affaires avec des pointeurs à tous. Ceux-ci devraient être laissés pour beaucoup plus tard, lorsque vous implémentez votre propre gestion de la mémoire non formatée I/O, ou dans une discussion historique de bizarreries.

InformationsquelleAutor Nate | 2012-01-10