Maison >développement back-end >C++ >Que se passe-t-il lorsque vous définissez un tableau de taille nulle en C/C ?

Que se passe-t-il lorsque vous définissez un tableau de taille nulle en C/C ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-26 04:19:08993parcourir

What Happens When You Define a Zero-Sized Array in C/C  ?

Impact de la définition d'un tableau de taille 0 en C/C

Lors de la définition d'un tableau en C/C, la taille du tableau doit être précisé. La curiosité surgit souvent quant au comportement de la définition d'un tableau d'une taille nulle, comme c'est le cas avec int array[0].

Dans l'exemple de code fourni, GCC ne génère aucune erreur ni aucun avertissement lors de la compilation. Cela soulève la question de savoir si les tableaux de longueur nulle sont optimisés lors de la compilation.

Selon la norme ISO 9899:2011 (C99), un tableau ne peut pas avoir une taille nulle. La norme indique explicitement que si la taille d'un tableau est une expression constante, elle doit avoir une valeur supérieure à zéro. Cette règle s'applique à la fois aux tableaux simples et aux tableaux de longueur variable (VLA).

Malgré la norme du langage, certains compilateurs peuvent autoriser la définition de tableaux de taille nulle pour des raisons de compatibilité héritée ou à des fins spécifiques. Cependant, il n'est pas garanti que le comportement des tableaux de taille nulle sera cohérent entre les différents compilateurs, et tenter d'accéder à un tableau de taille nulle entraînera probablement un comportement indéfini.

En tant que tel, il est recommandé pour éviter de définir des tableaux de taille nulle et pour gérer les cas où la taille du tableau peut être nulle par d'autres moyens, comme l'allocation conditionnelle de mémoire.

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