Maison >développement back-end >C++ >Pourquoi l'initialisation d'un tableau C avec une taille variable entraîne-t-elle une erreur ?

Pourquoi l'initialisation d'un tableau C avec une taille variable entraîne-t-elle une erreur ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-19 08:53:09804parcourir

Why Does Initializing a C   Array with a Variable Size Result in an Error?

Array[n] vs Array[10] : initialisation de tableaux avec variable vs littéral numérique

En C, une erreur se produit lors de l'initialisation d'un tableau avec une variable comme taille, comme le montre le code ci-dessous :

int n = 10;
double tenorData[n] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

L'erreur est : "L'objet de taille variable 'tenorData' ne peut pas être initialisé." En effet, les tableaux de taille variable ne sont pas autorisés en C .

G autorise ce comportement en tant qu'extension, mais il n'est pas techniquement conforme à la norme C. Pour résoudre ce problème, vous pouvez soit allouer dynamiquement de la mémoire, soit utiliser des conteneurs standard.

Allocation dynamique de mémoire

int n = 10;
double* a = new double[n];

N'oubliez pas de libérer la mémoire allouée en utilisant delete [] un; une fois terminé.

Conteneurs standard

int n = 10;
std::vector<double> a(n);

Tableaux constants

Si un tableau approprié est souhaité, il peut être initialisé avec une valeur constante plutôt qu'une variable :

const int n = 10;
double a[n];

En C 11, un constexpr peut être utilisé lors de l'obtention de la taille du tableau à partir d'une fonction :

constexpr int n()
{
    return 10;
}

double a[n()];

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:
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