Maison > développement back-end > C++ > le corps du texte

Pourquoi la déclaration d'un tableau flottant avec une taille dynamique entraîne-t-elle une erreur « Expression constante attendue » en C ?

DDD
Libérer: 2024-10-26 13:46:03
original
895 Les gens l'ont consulté

Why Does Declaring a Float Array with a Dynamic Size Result in an

La confusion dans la taille du tableau provoque une erreur

Lors de la déclaration d'un tableau flottant avec une taille dynamique, telle que :

<code class="cpp">int size = 100;
float x[size][2];</code>
Copier après la connexion

vous pouvez rencontrer une erreur « expression constante attendue ». Cela se produit car C exige que les tableaux aient des tailles fixes au moment de la compilation, non déterminées au moment de l'exécution. La variable de taille ici ne peut pas être utilisée comme dimension de tableau valide.

Solution avec vecteur

Pour éviter ce problème, pensez à utiliser un vecteur :

<code class="cpp">std::vector<std::array<float, 2>> x(size);</code>
Copier après la connexion

Cela crée un vecteur de tableaux, chaque tableau contenant deux flottants.

Solutions alternatives

Vous pouvez également utiliser l'allocation de mémoire brute avec new ou créer la vôtre type de tableau :

<code class="cpp">// With new
float (*px)[2] = new float[size][2];

// With custom array type
template<typename T, size_t N>
struct array {
  T data[N];
};

array<float, 2> myArray[size];</code>
Copier après la connexion

Options supplémentaires

D'autres options incluent l'utilisation d'un vecteur de paires ou le lancement de votre propre type de tableau avec des assistants de syntaxe :

<code class="cpp">// Vector of pairs
std::vector<std::pair<float, float>> x(size);

// Custom array type
template<typename T>
struct identity {
  typedef T type;
};

using FloatArray2 = identity<float[2]>::type;
FloatArray2 myArray[size];</code>
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal