IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Typedef d'un tableau et pointeur


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 070
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 070
    Billets dans le blog
    144
    Par défaut Typedef d'un tableau et pointeur
    Bonjour,

    J'ai remarqué un code sur le forum, mais j'arrive pas du tout à comprendre comment ça peut marcher.
    Voici le code que l'on peut voir (http://www.developpez.net/forums/d84...#post4857991):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    //création de la table de hachage
    typedef tableauDynamique_struct tableHachage_struct[TAILLEHASH];
     
     
    tableHachage_struct * CreerSimpleTableHachage()
    {
    	tableHachage_struct * THash = allocExit( sizeof * THash);
    	size_t i;
    	for(i=0;i<TAILLEHASH; i++)
    	{
    	TableauDynamique_struct_ctor(&THash[i]);
    	}
    	return THash;
    }
    Mon problème est le typedef, qui est fait de manière ( si j'ai bien compris ) à ce que le tableHashage_struct soit un tableau de TAILLEHASH de tableauDynamique_struct.

    Bref, ça encore ça passe pas trop mal dans mon cerveau.

    Après, on crée un pointeur dessus. Les pointeurs, normalement, j'ai pas de problème.
    Par contre, c'est dans l'utilisation de ce pointeur, qui pointe donc sur un tableau de structure de tableauDynamique_struct.

    Pour remettre le problème à sa simple expression j'ai fait ce programme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct MyStruct
    {
    	int x;
    }MyStruct;
    
    typedef MyStruct UltraStruct[100];
    
    int main(int argc, char** argv)
    {
    	{
    		MyStruct ms;
    		ms.x = 5;
    	}
    	
    	{
    		UltraStruct* us = NULL;
    		us = malloc ( sizeof(sizeof * us));
    		
    		if ( us == NULL )
    		{
    			printf("Erreur while allocating memory\n");
    			return -1;
    		}
    		else
    		{
    			int i = 0; 
    			
    			for ( i = 0 ; i < 100 ; i++ )
    			{
    				/* Ici j'ai un problème */
    				(*us)[i].x = i;
    			}
    			
    			/*us*/
    		
    			free(us);
    		}
    	}
    	
    	{
    		UltraStruct us;
    		int i = 0;
    		
    		for ( i = 0 ; i < 100 ; i++ )
    		{
    			us[i].x = i;
    		}
    	}
    	
    	return 0;
    }
    Voilà, mon code me semble bon, sauf la ligne ou j'ai mis le commentaire que j'avais un problème.
    Comment on remplit les éléments, de ce qui me semble un pointeur sur un tableau.

    Pour verifier les erreurs ( les seg faults ne se produisent pas toujours lorsque l'on dépasse la mémoire allouées ) j'utilise gdb ( debugguage ) et valgrind ( vérification mémoire ).

    Merci pour votre aide future ( je suis sur que c'est vraiment un problème dans mon cerveau ).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Le problème n'est pas là où tu le penses mais dans ton malloc. C'est quoi ce double sizeof ?

  3. #3
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 070
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 070
    Billets dans le blog
    144
    Par défaut
    Merci beaucoup ...


    *va s'enterrer à jamais ... *
    * Ne retouchera plus à la programmation *
    ( En plus c'est la deuxième fois de ma vie, que je fais un truc de ce genre, et ceci en moins de deux mois )
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  4. #4
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Bin, ça prouve juste que t'es déjà d'un niveau tellement avancé en programmation que tu ne penses plus aux choses simples , donc faut surtout pas arrêter .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tableau de pointeur de fonction
    Par Gryzzly dans le forum C
    Réponses: 7
    Dernier message: 31/12/2005, 10h47
  2. Tableau de pointeurs sur objets
    Par bassim dans le forum C++
    Réponses: 11
    Dernier message: 13/12/2005, 19h45
  3. [GCC] Tableau de pointeurs pour accès multiples en asm
    Par Flo. dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 12/12/2005, 08h47
  4. tableau de pointeurs
    Par seal3 dans le forum C++
    Réponses: 7
    Dernier message: 01/11/2005, 20h51
  5. Tableau de pointeurs de fonctions
    Par Alp dans le forum C++
    Réponses: 7
    Dernier message: 29/10/2005, 13h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo