Maison > développement back-end > C++ > Pourquoi ne puis-je pas attribuer directement des tableaux en C et quelles sont les alternatives ?

Pourquoi ne puis-je pas attribuer directement des tableaux en C et quelles sont les alternatives ?

Barbara Streisand
Libérer: 2024-12-01 18:16:12
original
352 Les gens l'ont consulté

Why Can't I Directly Assign Arrays in C  , and What Are the Alternatives?

Dilemme d'affectation de tableau en C

En C, l'attribution directe d'un tableau à un autre tableau n'est pas réalisable, et le message d'erreur "Erreur C2106" : '=' : l'opérande de gauche doit être la valeur l" est rencontré. Ce problème provient des comportements particuliers des tableaux en C en raison de leur compatibilité avec C.

Comprendre le comportement

Les tableaux en C ne sont pas attribuables en raison d'un héritage de Implémentation du tableau de C. Les tableaux sont représentés comme des références décroissantes à leur premier élément, ce qui en fait des valeurs l non modifiables. En d'autres termes, les tableaux ne peuvent pas être attribués à d'autres objets comme les variables normales.

Solution

Pour travailler avec des fonctionnalités de type tableau en C , des conteneurs alternatifs du modèle standard Les bibliothèques (STL) sont recommandées, telles que std::array ou std::vector. Ces conteneurs STL permettent un comportement semblable à celui d'un tableau tout en offrant des capacités d'affectation.

Exemple avec std::array

#include <array>

int main() {
    std::array<int, 5> numbers = {1, 2, 3};
    std::array<int, 5> values = {};

    values = numbers;
}
Copier après la connexion

Retour avec des tableaux

Si l'utilisation de conteneurs STL n'est pas une option, copier manuellement les éléments du tableau à l'aide d'une boucle ou d'une fonction comme std::copy est nécessaire.

Exemple avec copie de tableau

#include <algorithm>

int main() {
    int numbers[5] = {1, 2, 3};
    int values[5] = {};

    std::copy(numbers, numbers + 5, values);
}
Copier après la connexion

Remarque supplémentaire

Le tableau de valeurs peut être initialisé avec un liste d'initialisation vide, comme indiqué ci-dessous, s'appuyant sur la règle d'initialisation de valeur définie par la norme pour les agrégats, qui initialise les éléments non spécifiés pour zéro.

int values[5] = {};
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal