Maison  >  Article  >  développement back-end  >  Quelle est la différence lorsqu’une fonction C++ renvoie un tableau ?

Quelle est la différence lorsqu’une fonction C++ renvoie un tableau ?

PHPz
PHPzoriginal
2024-04-19 21:06:02626parcourir

Les fonctions C++ ont deux comportements lors du renvoi d'un tableau : une copie est renvoyée par valeur et les modifications apportées à la copie n'affectent pas le tableau d'origine ; une référence au tableau d'origine est renvoyée par référence et les modifications apportées au tableau renvoyé sont directement reflétées. dans le tableau d'origine.

C++ 函数返回数组时有什么区别?

Différences lorsque les fonctions C++ renvoient des tableaux

En C++, les fonctions peuvent renvoyer différents types de données, y compris des tableaux. Lorsqu'une fonction renvoie un tableau, il existe deux comportements différents :

  • Retour par valeur : Renvoie une copie du tableau à l'appelant.
  • Retour par référence : Renvoie une référence au tableau, pas une copie.

Retour par valeur

Lorsque vous renvoyez un tableau par valeur, la fonction crée une copie du tableau et la renvoie à l'appelant. Cela crée une nouvelle copie de la mémoire et toute modification apportée à cette copie n'affectera pas le tableau d'origine.

Syntaxe :

int* foo() {
    int arr[] = {1, 2, 3};
    return arr;
}

Cas pratique :

int main() {
    int* arr = foo();
    arr[0] = 10; // 更改副本值,不影响原始数组
    return 0;
}

Retour par référence

Lors du retour d'un tableau par référence, la fonction renvoie directement une référence au tableau d'origine. Cela ne crée pas de nouvelle copie de la mémoire, ce qui signifie que toute modification apportée au tableau renvoyé sera reflétée directement dans le tableau d'origine.

Syntaxe :

int* &bar() {
    static int arr[] = {1, 2, 3};
    return arr;
}

Cas pratique :

int main() {
    int* &arr = bar();
    arr[0] = 10; // 更改原始数组值
    return 0;
}

Différence

Caractéristiques Retour par valeur Retour par référence
Retourner une copie de Oui Non
Les modifications apportées au tableau renvoyé n'affectent pas le tableau d'origine sont reflétées directement dans le tableau d'origine
Surcharge de mémoire Créez une copie, la surcharge de mémoire est plus élevée Ne créez pas de copie, de mémoire les frais généraux sont inférieurs
Efficacité efficacité d'exécution inférieure efficacité d'exécution supérieure

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn