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; }
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); }
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] = {};
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!