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

  FORUM HardWare.fr
  Programmation
  C++

  [C] Pourquoi pour declarer 2 pointeurs...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Pourquoi pour declarer 2 pointeurs...

n°143251
ezzz
23
Posté le 23-05-2002 à 14:47:51  profilanswer
 

ont doit ecrire :  
 
Node *a, *b;
 
et pas
 
Node*  a,b;
 
 :??:

mood
Publicité
Posté le 23-05-2002 à 14:47:51  profilanswer
 

n°143254
antp
Super Administrateur
Champion des excuses bidons
Posté le 23-05-2002 à 14:49:09  profilanswer
 

ça c'est une question difficile :/
J'en sais rien...  
Et c'est vrai que c'est pas logique :o
En Pascal c'est le contraire.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°143255
jodalton
Posté le 23-05-2002 à 14:49:45  profilanswer
 

Bah je suis pas un spécialiste, mais je dirais que :
 
1-C'est comme ça  :p  
2-L'étoile * se rapporte à ce qui suit donc au "a" si tu en mets qu'une...

n°143256
ninja sky
cai skylight
Posté le 23-05-2002 à 14:51:40  profilanswer
 

car on declare 2 adresses, et non 2 variables , le compilateur doit donc faire la différence ... donc a coté de chaque pointeur, on assigne le symbole ki fera que le compilateur interpretera une adresse et non une variable :)

n°143258
ezzz
23
Posté le 23-05-2002 à 14:52:33  profilanswer
 

jodalton a écrit a écrit :

Bah je suis pas un spécialiste, mais je dirais que :
 
1-C'est comme ça  :p  
2-L'étoile * se rapporte à ce qui suit donc au "a" si tu en mets qu'une...  




 
Ouais mais justement tu declares 2 pointeurs et pas 2 nodes donc ca serait plus logique que ca soit des node*...

n°143266
ezzz
23
Posté le 23-05-2002 à 14:55:31  profilanswer
 

ninja sky a écrit a écrit :

car on declare 2 adresses, et non 2 variables , le compilateur doit donc faire la différence ... donc a coté de chaque pointeur, on assigne le symbole ki fera que le compilateur interpretera une adresse et non une variable :)  




 
ouais mais c debile ce que tu dis pq qd tu declares 2 variables comme ca :
 
type a,b;
 
Le compilateur sait que b est du meme type que a...
 
Et du coup si tu veux deux pointeurs sur type tu fais :
 
(type*) a,b;
 
 
non ?  :??:

n°143271
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 23-05-2002 à 14:59:15  profilanswer
 

sincèrement, est ce que le fait de marquer type *a, *b au lieu de type* a,b change qqchose ?
 
franchement, on s'en fout de la syntaxe... à la limite, je préfère comme c'est actuellement, comme ça on voit de suite que a et b sont des pointeurs
 
la syntaxe des pointeurs du C est déja bien assez complexe comme ça, on va pas se prendre la tête pour si peu... :sarcastic:  
 
comme dit jodalton : c'est comme ça...


---------------
J'ai un string dans l'array (Paris Hilton)
n°143272
bjone
Insert booze to continue
Posté le 23-05-2002 à 15:00:19  profilanswer
 

oui mais non....
 
je pense que la philosophie initiale était du style
 
type (modifier)a, (modifier)b;
 
car tu peux avoir:
 
type *a,b[60],**c;

n°143273
jodalton
Posté le 23-05-2002 à 15:01:19  profilanswer
 

J'en sais pas plus que tout à l'heure mais je vais qd meme préciser ce que je pensais :
 
Si l'étoile * se rapporte uniquement à ce qui est après, (Node*) n'a pas de sens en soit, il faut écrire Node *a,*b ...
 
Harkonnen > faut se poser des questions des fois, ça peut faire avancer le monde !

n°143279
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 23-05-2002 à 15:10:16  profilanswer
 

jodalton a écrit a écrit :

Harkonnen > faut se poser des questions des fois, ça peut faire avancer le monde !  




ouais mais bon, faut pas se prendre la tête non plus sur des trucs qui de toute façon ne changeront pas, que des générations entières de programmeurs ont utilisé et qui a fait ses preuves... et puis, je suppose que Kernighan avait surement une bonne raison de mettre en place la notation actuelle, autant lui demander directement plutot que de se laisser à de vagues suppositions....  :sarcastic:


---------------
J'ai un string dans l'array (Paris Hilton)
mood
Publicité
Posté le 23-05-2002 à 15:10:16  profilanswer
 

n°143283
bjone
Insert booze to continue
Posté le 23-05-2002 à 15:13:09  profilanswer
 

bjone a écrit a écrit :

oui mais non....
 
je pense que la philosophie initiale était du style
 
type (modifier)a, (modifier)b;
 
car tu peux avoir:
 
type *a,b[60],**c;  




 
et ça c'est pas une explication logique ;)
 
on peut très bien faire
 
type yo = wesh *
 
yo a,b
 
et a & b sont des pointeurs sur wesh.
 
et tu peux aussi avoir besoin d'écrire
 
yo a,*b
 
ou tu as un pointeur sur wesh, et un pointeur sur pointeur (un pointeur sur une table de pointeurs malloc-ée qui pointent sur des wesh)

n°143286
ezzz
23
Posté le 23-05-2002 à 15:14:02  profilanswer
 

bjone a écrit a écrit :

oui mais non....
 
je pense que la philosophie initiale était du style
 
type (modifier)a, (modifier)b;
 
car tu peux avoir:
 
type *a,b[60],**c;  




 
ca ca me plait plus deja comme reponse...
 
mais je vois pas pourquoi ca serait plus logique que l'autre point de vue. Pq ds l'exemple que tu donnes, le compilateur doit reserver 3 emplacements de memoire differents...

n°143288
bjone
Insert booze to continue
Posté le 23-05-2002 à 15:15:06  profilanswer
 

enfin on peut retomber sur +/- la même chose.
 
c'est de la convention..
c comme les anglais qui roulent à gauche et nous à droite.
chaqun pense que l'autre est débile....

n°143292
jodalton
Posté le 23-05-2002 à 15:15:59  profilanswer
 

Harkonnen a écrit a écrit :

 
ouais mais bon, faut pas se prendre la tête non plus sur des trucs qui de toute façon ne changeront pas, que des générations entières de programmeurs ont utilisé et qui a fait ses preuves... et puis, je suppose que Kernighan avait surement une bonne raison de mettre en place la notation actuelle, autant lui demander directement plutot que de se laisser à de vagues suppositions....  :sarcastic:  




C clair que c'est pas un topic super important et pourtant... si on savait tous pourquoi il faut mettre "Nodes *a,*b" on ferait moins d'erreur sur ce celèbre piège du C  :sarcastic:

n°143297
bjone
Insert booze to continue
Posté le 23-05-2002 à 15:19:27  profilanswer
 

jodalton a écrit a écrit :

 
C clair que c'est pas un topic super important et pourtant... si on savait tous pourquoi il faut mettre "Nodes *a,*b" on ferait moins d'erreur sur ce celèbre piège du C  :sarcastic:  




 
bof c'est pas pire que:
 
if( a=b );
   fais_un_truc_qui_arriveras_tout_le_temps();
 
:D (fo trouver le double truc pourri dans le code ;) )

n°143299
ezzz
23
Posté le 23-05-2002 à 15:20:08  profilanswer
 

bjone a écrit a écrit :

 
 
et ça c'est pas une explication logique ;)
 
on peut très bien faire
 
type yo = wesh *
 
yo a,b
 
et a & b sont des pointeurs sur wesh.
 
et tu peux aussi avoir besoin d'écrire
 
yo a,*b
 
ou tu as un pointeur sur wesh, et un pointeur sur pointeur (un pointeur sur une table de pointeurs malloc-ée qui pointent sur des wesh)  




 
mouais :/
 
pour yo a,*b;
 
on peut toujours faire: yo a; yo* b;

n°143306
bjone
Insert booze to continue
Posté le 23-05-2002 à 15:22:36  profilanswer
 

a ouais mais c'est clair, tu peux toujours retomber sur la même chose.
après c'est l'habitude.
 
enfin je trouve que:
yo *a, *b;
 
est plus lisible que:
yo*   a,b;
 
pour déclarer des pointeurs....
car si par malheur, avec la deuxième convention tu fais:
yo *a,*b;
tu obtiens un pointeur, et un pointeur sur pointeur....

n°143308
antp
Super Administrateur
Champion des excuses bidons
Posté le 23-05-2002 à 15:22:44  profilanswer
 

bjone a écrit a écrit :

 
 
bof c'est pas pire que:
 
if( a=b );
   fais_un_truc_qui_arriveras_tout_le_temps();
 
:D (fo trouver le double truc pourri dans le code ;) )  




 
arf :)
pour le = ça va, beaucoup de compilateurs te préviennent, mais l'autre est pas facile à voir, j'ai eu le coup y a pas longtemps :sweat:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°143309
ezzz
23
Posté le 23-05-2002 à 15:23:18  profilanswer
 

bjone a écrit a écrit :

 
 
bof c'est pas pire que:
 
if( a=b );
   fais_un_truc_qui_arriveras_tout_le_temps();
 
:D (fo trouver le double truc pourri dans le code ;) )  




 
parle pas de malheur ca m'est arrive aujourd'hui  :(  
 
saloperie de c  :D

n°143311
bjone
Insert booze to continue
Posté le 23-05-2002 à 15:24:16  profilanswer
 

antp a écrit a écrit :

 
 
arf :)
pour le = ça va, beaucoup de compilateurs te préviennent, mais l'autre est pas facile à voir, j'ai eu le coup y a pas longtemps :sweat:  




 
c'est clair c un grand classique le deuxième, tu passer un après-midi à débugguer un truc avant de le voir :crazy:

n°143313
ezzz
23
Posté le 23-05-2002 à 15:26:58  profilanswer
 

bjone a écrit a écrit :

a ouais mais c'est clair, tu peux toujours retomber sur la même chose.
après c'est l'habitude.
 
enfin je trouve que:
yo *a, *b;
 
est plus lisible que:
yo*   a,b;
 
pour déclarer des pointeurs....
car si par malheur, avec la deuxième convention tu fais:
yo *a,*b;
tu obtiens un pointeur, et un pointeur sur pointeur....  




 
bah justement moi mon habitude c'est de me dire il me faut un pointeur sur yo donc je declare un yo*
et cette habitude m'a deja cause des soucis qd je veux declarer 2 pointeurs d'un coup mais bon faut s'y faire...
 
et puis c'est juste histoire de patienter pendant que ca compile  :D

mood
Publicité
Posté le   profilanswer
 


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

  [C] Pourquoi pour declarer 2 pointeurs...

 

Sujets relatifs
declarer une variable booleene avec mysql[C++] fonctions void, pointeurs et creations de structurs (en m tps!!)
[java] comment déclarer une méthode deprecated[C] Comment ca marche un systeme de listes et pointeurs?
[Delphi] Comment déclarer une variable globale ?Interbase, comment déclarer un champ de type booléen
[C++] question bête sur la programmation et les pointeurs...comment déclarer et utiliser un activex en c++?
[C] Systeme de listes et pointeursC++ : Déclarer un vecteur qui contiennent plusieurs type ?!?!?
Plus de sujets relatifs à : [C] Pourquoi pour declarer 2 pointeurs...


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