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 :

a propos du typedef


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de elmcherqui
    Profil pro
    Inscrit en
    Février 2008
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Maroc

    Informations forums :
    Inscription : Février 2008
    Messages : 281
    Par défaut a propos du typedef
    bonjour j'ai une question a propos du typedef .

    on nous a a appris sur les bouquins qui apprennent le C d'utiliser le typedef comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    typedef int entier;
    entier N =0;  //  N est un nombre de type INT
    mais voila que maintenant j'aimerais creer un tableau d'entier avec le typedef .
    normalement on doit faire sa
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    typedef int [50] v_entier; // ne marche pas
    alors que ce code ci dessous marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    typedef int v_entier [50]; //v_entier est un tableau de int
    quelqu'un peut m'expliquer pourquoi le premier ne marche pas et le second marche ?
    merci .

  2. #2
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Ben, lorsque tu veux déclarer un tableau dans ton code, tu fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int mon_tableau[TAILLE] = {0};
    et non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int [TAILLE] mon_tableau; /* FAUX */
    Avec typedef, c'est pareil !

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  3. #3
    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
    Pour compléter la réponse de Thierry, typedef s'utilise ainsi :

    On déclare une variable possédant le type qu'on veut créer :
    On remplace l'identifiant de la variable par le nom du type en commençant la construction par typedef :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    typedef int TABLEAU[TAILLE];
     
    TABLEAU t;

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 966
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 966
    Par défaut
    Jao,
    Citation Envoyé par elmcherqui Voir le message
    normalement on doit faire sa
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    typedef int [50] v_entier; // ne marche pas
    alors que ce code ci dessous marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    typedef int v_entier [50]; //v_entier est un tableau de int
    quelqu'un peut m'expliquer pourquoi le premier ne marche pas et le second marche ?
    merci .
    C'est pourtant simplissime : parce que le premier code est faux, et le deuxième correct.

    N'importe quel cours/bouquin/didacticiel de C te l'aurait appris.

  5. #5
    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
    Citation Envoyé par droggo
    C'est pourtant simplissime : parce que le premier code est faux, et le deuxième correct.

    N'importe quel cours/bouquin/didacticiel de C te l'aurait appris.
    Je comprend quand même le souci de elmcherqui. int [50] est bien un nom de type valide en C mais il ne peut pas être entre autres utilisé pour déclarer une variable. Par contre, sizeof(int [50]) a bien un sens et vaut 50 * sizeof(int). La question n'est pas si bête que tu sembles dire.

  6. #6
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par Melem Voir le message
    Je comprend quand même le souci de elmcherqui. int [50] est bien un nom de type valide en C mais il ne peut pas être entre autres utilisé pour déclarer une variable. Par contre, sizeof(int [50]) a bien un sens et vaut 50 * sizeof(int). La question n'est pas si bête que tu sembles dire.
    C'est vrai qu'on voit mieux ce qui se passe quand on considère un pointeur sur un tableau de 50 ints dont le type est: int (*)[50].

    J'ai effectivement lu des livres de C qui ne traitaient pas la notation utilisée pour créer un alias sur un type tableau. Idem pour les typedef sur une fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef int my_callback(int, int);
    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

Discussions similaires

  1. A propos depth buffer
    Par j.yves dans le forum DirectX
    Réponses: 1
    Dernier message: 03/12/2002, 00h41
  2. A propos des modèles d'objet (avec sources)
    Par DevX dans le forum C++Builder
    Réponses: 14
    Dernier message: 01/12/2002, 12h22
  3. Fonctionnement de la compression DivX
    Par Rodrigue dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 20/09/2002, 14h10
  4. A propos du composant DBGrid
    Par _Rico_ dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/07/2002, 09h18
  5. Sortir un typedef d'une classe
    Par Theophil dans le forum C++Builder
    Réponses: 13
    Dernier message: 03/07/2002, 17h21

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