Tableau dynamique dans une structure

Tableau dynamique dans une structure - C - Programmation

Marsh Posté le 08-12-2006 à 16:51:43    

Bonjour,
 
Je suis newbie en C mais j'ai besoin de créer pour un programme un structure qui contiendrait un tableau dynamique.
Est ce possible et comment dois je m'y prendre pour allouer la mémoire?
 

Code :
  1. struct ma_structure{
  2. int var1;
  3. int * tab[];
  4. }ma_structure;
  5. int taille = 10;
  6. ma_structure * instance;
  7. instance = (ma_structure *) malloc(taille*sizeof(ma_structure));
  8. instance[i].tab = (int *) malloc(taille*sizeof(int));

Reply

Marsh Posté le 08-12-2006 à 16:51:43   

Reply

Marsh Posté le 08-12-2006 à 16:55:50    

si tu veux un tableau d'entiers, alors déclare simplement un int *tab;

Reply

Marsh Posté le 08-12-2006 à 16:58:27    

oui mais comment dois je m'y prendre pour allouer la mémoire?

Reply

Marsh Posté le 08-12-2006 à 17:00:28    

Code :
  1. struct MaStructure {
  2.   int *tab;
  3. };
  4. // ...
  5. {
  6.   size_t taille=100;
  7.   struct MaStructure s;
  8.   s.tab = malloc(taille*sizeof(int));
  9. }
 

(on ne caste pas un malloc, en C ... si ca te génère un warning, c'est que tu compiles en C++)


Message édité par theshockwave le 08-12-2006 à 17:01:17
Reply

Marsh Posté le 08-12-2006 à 17:05:15    

Ah oui ca passe beaucoup mieux ;)
 
Merci


Message édité par kerrighan le 08-12-2006 à 17:05:30
Reply

Marsh Posté le 08-12-2006 à 19:47:16    

Code :
  1. struct ma_structure
  2. {
  3.    int var1;
  4.    int tab[];
  5. };
  6. struct ma_structure* m = malloc(sizeof struct ma_structure + 42 * sizeof int);


 
style C99, surallouer une allocation de structure pour créer un tableau. Le tableau doit être le dernier membre de la structure. Ici j'ai alloué 42 entiers dans tab.

Reply

Marsh Posté le 08-12-2006 à 21:21:28    

mais ce qu'il me faut, c'est un tableau de pointeurs :/

Reply

Marsh Posté le 09-12-2006 à 00:59:46    

kerrighan a écrit :

mais ce qu'il me faut, c'est un tableau de pointeurs :/


Alors int **.
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 09-12-2006 à 10:43:10    

kerrighan a écrit :

mais ce qu'il me faut, c'est un tableau de pointeurs :/


 
Au temps pour moi, j'avais pas noté le int*[]. Alors voilà, même principe, en C99 uniquement.
 

Code :
  1. struct ma_structure
  2. {
  3.    int var1;
  4.    int* tab[];
  5. };
  6. struct ma_structure* m = malloc(sizeof struct ma_structure + 42 * sizeof int*);

Reply

Marsh Posté le 09-12-2006 à 15:54:39    

merci messieurs :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed