Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
901 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Question from a noob : difference entre "->" et "." ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Question from a noob : difference entre "->" et "." ?

n°922212
Chronoklaz​m
Posté le 13-12-2004 à 19:55:48  profilanswer
 

Je pige pas c'est quoi la difference entre l'operateur -> et le "." ?
 
En fait, j'ai deux struct et pour l'une (à la creation) il faut un malloc, est ce que ca un rapport ?


Message édité par Chronoklazm le 13-12-2004 à 20:03:19
mood
Publicité
Posté le 13-12-2004 à 19:55:48  profilanswer
 

n°922213
WhatDe
Posté le 13-12-2004 à 20:00:43  profilanswer
 

-> pour les pointeurs de struct.

n°922218
c0wb0y
:d
Posté le 13-12-2004 à 20:18:26  profilanswer
 

pointeur->champs est equivalant à : (*pointeur).champs
 
Ce n'est qu'une simplification de l'écriture

n°922461
AlphaZone
Posté le 14-12-2004 à 07:36:07  profilanswer
 

le . concerne un objet alors que le -> concerne un pointeur.
 
Exemple:
typedef struct {
int test1;
double temp;
} test_t;
 
// EXEMPLE CAS OBJET
test_t toto;
toto.test1 = 10;
 
// EXEMPLE CAS POINTEUR
test_t* toto;
//toto = (test_t*)malloc(sizeof(test_t));
toto->test1 = 10;
 
(Il me semble qu'il faut faire un malloc pour le pointeur, non ?)


Message édité par AlphaZone le 14-12-2004 à 07:37:29
n°922462
Ace17
Posté le 14-12-2004 à 07:44:51  profilanswer
 

AlphaZone a écrit :

(Il me semble qu'il faut faire un malloc pour le pointeur, non ?)


non  :o  
tu peux tres bien ecrire

Code :
  1. int a;
  2. int* b = &a;
  3. *b = valeur;

n°922667
AlphaZone
Posté le 14-12-2004 à 13:26:54  profilanswer
 

Je fesais référence à la structure dans mon exemple ;)
Il me semble qu'il faut alloué de la mémoire pour un pointeur sur une structure.
 
Qui peut m'éclairer les idées ?

n°922742
matafan
Posté le 14-12-2004 à 14:14:08  profilanswer
 

Oui, il faut que ton pointeur pointe vers une zone allouée pour que tu puisse le deréfencer. Mais la mémoire n'a pas forcément été allouée par malloc : le pointeur peux aussi pointer vers une variable globale, ou un variable automatique.
 
Bref c'est exactement ce qu'a dit Ace17. Tu peux remplacer "int" par "struct toto" dans son exemple.

n°922747
Emmanuel D​elahaye
C is a sharp tool
Posté le 14-12-2004 à 14:15:21  profilanswer
 

AlphaZone a écrit :

Je fesais référence à la structure dans mon exemple ;)
Il me semble qu'il faut alloué de la mémoire pour un pointeur sur une structure.
 
Qui peut m'éclairer les idées ?


Il y a quatre façons d'initialiser un pointeur (autre que FILE*) :
 

  • Avec la valeur NULL

  T *p = NULL;
 

  • avec l'adresse d'un objet du même type

  T a;
   T *p = &a;
 

  • avec la valeur d'un pointeur du même type ou void*.

  T a;
   T *pa = &a;
   T *p = pa;
 

  • avec la valeur retournée par malloc()

  T *p = malloc (sizeof *p);


Message édité par Emmanuel Delahaye le 14-12-2004 à 14:17:04

---------------
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/
n°923178
AlphaZone
Posté le 14-12-2004 à 18:28:47  profilanswer
 

Merci des explications ;)

n°924400
Sve@r
Posté le 15-12-2004 à 19:45:42  profilanswer
 

Emmanuel Delahaye a écrit :

Il y a quatre façons d'initialiser un pointeur (autre que FILE*) :
 

  • Avec la valeur NULL

  T *p = NULL;
 

  • avec l'adresse d'un objet du même type

  T a;
   T *p = &a;
 

  • avec la valeur d'un pointeur du même type ou void*.

  T a;
   T *pa = &a;
   T *p = pa;
 

  • avec la valeur retournée par malloc()

  T *p = malloc (sizeof *p);


Pour être certain de ne jamais aller lire ou écrire dans une zone foireuse (non allouée ou autre), il ne faut jamais aller travailler sur "*p" si on n'a pas fait auparavant "p=valeur correcte"
 
PS: Quand on écrit "T *p=qqchose", on définit un pointeur de type "T" et on l'initialise en même temps. C'est à dire que le "qqchose" va dans "p" et non dans "*p"


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Question from a noob : difference entre "->" et "." ?

 

Sujets relatifs
Ptite question toute bete !! (HTML, boutons, formulaire..)Question de débutant.....
[VB] différence entre version initiation et entreprise ?[HTML] Question taille tableau
Une question sur une procédureJavascript > j'ai une petite question sur un champ text
Question sur les vecteursquestion sur une instruction avec un "size of "
Aidez un noob!! ?clik:clik parecherche programmeur pour question
Plus de sujets relatifs à : Question from a noob : difference entre "->" et "." ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR