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
230 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!

source:php.cn
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