[C] Structure avec tableau taille dynamique ?

Fermé
Stupeflip Messages postés 391 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007 - 14 mai 2007 à 15:09
Stupeflip Messages postés 391 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007 - 14 mai 2007 à 16:49
Bonjour,

Alors voilà j'ai une structure avec dedans :
unsigned char  lg_champ;			
unsigned char  champ[7];

Vous vous en doutez, je voudrais remplacer le 7 par une variable dépendant de lg_champ. Qqun saurait-il comment faire cela en C ? Voire alternative C++ avec des classes ?

Merci d'avance !
A voir également:

4 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
14 mai 2007 à 15:29
int nombre=7;
unsigned char *champ;

champ=(unsigned char*)malloc(nombre*sizeof(unsigned char));

Tu es obligé de faire un tableau dynamique si tu souhaites allouer le tableau à l'exécution.

En c++, tu utiliserais plutôt l'opérateur new, pas besoin de classes pour faire ça.
0
Stupeflip Messages postés 391 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007 94
14 mai 2007 à 15:34
Merci, mais ce n'est pas ce que je recherche, je reformule :

Il me faut la déclaration du tableau et de sa taille allouée dans la structure si c'est possible. Donc pas de malloc/new dans une éventuelle fonction.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
14 mai 2007 à 16:17
Alors non ce n'est pas possible. En effet, si tu n'écris pas la dimension du tableau en dur dans le programme, alors l'initialisation se fait dans le heap. C'est pourquoi il faut une déclaration dynamique, et du coup, tu es obligé d'utiliser malloc ou new.
0
Stupeflip Messages postés 391 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007 94
14 mai 2007 à 16:49
Erf.. Bon je vais continuer à chercher une solution..

Merci à toi !
0