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 :

difference sizeof(int*) et sizeof(int)


Sujet :

C

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 4
    Points : 5
    Points
    5
    Par défaut difference sizeof(int*) et sizeof(int)
    Quel est la difference entre sizeof(int ) et sizeof(int*) ??
    Pourquoi dans la l'allocation d'un vecteur de n entier on ecrit:
    T=(int*)malloc(n*sizeof(int*))
    et nom pas
    T=(int*)malloc(n*sizeof(int))

    SVP avec explication détaillé sur la difference entre sizeof(int*) et sizeof(int)

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 373
    Points : 23 629
    Points
    23 629
    Par défaut
    Citation Envoyé par infoprogramation Voir le message
    Quel est la difference entre sizeof(int ) et sizeof(int*) ??
    sizeof(int) te renvoie la taille d'un entier, sizeof(int *) te donne la taille d'un pointeur sur un entier. Généralement, tous les pointeurs font la même taille, car ils contiennent tous une adresse mémoire (il faut avoir une architecture très exotique pour avoir des pointeurs qui diffèrent en fonction de ce qu'ils pointent).

    D'autre part, sur un PC 32 bits, les pointeurs et les entiers ordinaires font la même taille (4 octets. je pense que l'on peut dire « tout le temps » sans trop se mouiller). Donc même si tu choisis le mauvais type pour ton sizeof(), il y a des chances pour que tu retombes sur tes pattes quand mêmes.

    Pourquoi dans la l'allocation d'un vecteur de n entier on ecrit:
    T=(int*)malloc(n*sizeof(int*))
    et nom pas
    T=(int*)malloc(n*sizeof(int))
    Si. C'est bien la deuxième expression qu'il faut utiliser.

  3. #3
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Et j'ai plutot tendance à utiliser cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    T = malloc(n * sizeof(*T))
    Comme cela ca fait une ligne de moins où on traine le type de T et où le fait qu'il n'y soit pas ne manque pas.

Discussions similaires

  1. SWIG : Conversion int * (C++) vers int[] (java)
    Par Feneck91 dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 26/01/2017, 18h05
  2. int et unsigned int
    Par Biosox dans le forum C
    Réponses: 12
    Dernier message: 06/12/2009, 21h39
  3. convertir int negatif en int positif
    Par danou07200 dans le forum C#
    Réponses: 3
    Dernier message: 26/04/2009, 17h37
  4. sizeof(variable) ou sizeof(type)
    Par soazig dans le forum C
    Réponses: 6
    Dernier message: 04/10/2006, 09h18
  5. calcul melangeant int et long int ?
    Par ThR dans le forum C
    Réponses: 2
    Dernier message: 06/01/2003, 01h13

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