Struct avec un tableau en variable en c
j'ai besoin de créer un type de données (struct dans ce cas) avec un tableau en tant que propriété. J'ai un initialiser la fonction qui initialise la structure de données et donne le tableau d'une taille spécifiée. Le problème est maintenant de la déclaration du tableau de la struct. par exemple "int valeurs[]" exigera que j'ai entrez un nombre dans les parenthèses par exemple les valeurs de[256]. Th3 256 doit être spécifié wen la structure est initialisé. Est-il possible que je contourner ce problème?
typedef struct
{
int values[]; //error here
int numOfValues;
} Queue;
OriginalL'auteur pnizzle | 2011-09-17
Vous devez vous connecter pour publier un commentaire.
Une structure doit avoir une taille fixe connue au moment de la compilation. Si vous voulez un tableau avec une longueur variable, vous devez allouer dynamiquement de la mémoire.
Cette façon, vous n'avez le pointeur stocké dans votre structure. Dans l'initialisation de la structure, vous affecter le pointeur vers une zone de mémoire allouée avec malloc:
N'oubliez pas de vérifier la valeur de retour pour un
NULL
pointeur etfree()
toute la mémoire allouée dynamiquement dès qu'il n'est plus utilisé.OriginalL'auteur raimue
De cette façon, vous pouvez déclarer la variable " longueur des baies. Et vous pouvez accéder à votre tableau de valeurs avec file->valeurs[index]
EDIT: bien sûr, vous devez vous assurer qu'une fois que vous vous êtes libres de prendre en compte le " n*sizeof(int)' vous avez alloué avec sizeof(Queue_t) où n=256 dans l'exemple ci-dessus
HTH
OriginalL'auteur Anoop Menon
Vous pouvez utiliser les fonctions C99 comme VLA, par exemple
OriginalL'auteur user411313