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

Pourquoi ne puis-je pas attribuer directement des tableaux en C ?

Patricia Arquette
Libérer: 2024-12-05 21:21:11
original
1063 Les gens l'ont consulté

Why Can't I Directly Assign Arrays in C  ?

Pourquoi les tableaux ne sont pas attribuables en C

En C, les tableaux ne peuvent pas être attribués directement à d'autres tableaux. Ce comportement peut paraître étrange, mais il est dû à l'héritage du langage issu du C.

Le message d'erreur "Erreur C2106 : '=' : l'opérande gauche doit être une valeur l" indique que l'opérande gauche (dans ce cas, valeurs) doit être une valeur l, qui est un objet modifiable auquel peut être attribué. Cependant, les tableaux ne sont pas considérés comme des valeurs L en C.

Raisons des tableaux non attribuables

Les tableaux C ne sont pas attribuables pour plusieurs raisons :

  • Compatibilité héritée : Les tableaux en C sont rétrocompatibles avec les tableaux C, qui ont été implémentés en tant que pointeurs et n'ont pas pu être attribués directement.
  • Taille du tableau : Les tableaux ont une taille fixe une fois déclarés. Attribuer un tableau à un autre nécessiterait de changer la taille du tableau, ce qui n'est pas autorisé en C .

Solutions alternatives

Pour travailler avec des tableaux en C , il existe plusieurs solutions alternatives :

  • std::array et std::vector: C propose des conteneurs modernes comme std::array et std::vector. Ces conteneurs permettent respectivement l'affectation et le redimensionnement.
  • Copie basée sur des boucles : En dernier recours, vous pouvez copier manuellement des éléments entre des tableaux à l'aide de boucles.

Exemple :

#include <algorithm>

// Original arrays
int numbers[5] = {1, 2, 3};
int values[5] = {};

// Copying elements using std::copy
std::copy(numbers, numbers + 5, values);
Copier après la connexion

Alternativement, en utilisant std::array:

#include <array>

// Modern arrays
std::array<int, 5> numbers = {1, 2, 3};
std::array<int, 5> values = {};

// Assignment
values = numbers;
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