OVH Cloud OVH Cloud

type* ou *type ?

36 réponses
Avatar
Zouplaz
Bonjour, excusez ma pollution mais j'ai récemment décidé d'écrire
maClasse* monPtr au lieu du contraire à savoir maClasse *monPtr.

J'ai cru lire quelque part que c'était la deuxième forme qui était la
bonne, quelqu'un peut confirmer ?

Merci

10 réponses

1 2 3 4
Avatar
kanze
"Michel Michaud" wrote in message
news:<xYTnb.2615$...
Dans news:bnp0po$s0l$, Anthony

En C++, on devrait autant que possible déclarer les variables
seulement lorsqu'on peut les initialiser. Dans ce cas, il est rare
d'avoir à déclarer deux variables. Une règle simple est donc de ne
déclarer qu'un variable à la fois. Dans ce cas, il n'y a aucun
danger à mettre C* v=...;


Je suis bien d'accord sur ce point. En fait, je tirais ma
justification sur la position de l' * dans une
déclaration/définition de mon experience en C. Il est cependant vrai
que je n'utilise jamais cette construction en C++.


En C, j'utilise type *p. En C++, j'utilise type* p.

Deux langages différents...


C'est marrant, parce que même en C (et ça depuis au moins vingt ans),
j'utilise « C* p ». Et j'interdis pour la plupart des déclarations
multiple dans une seule instruction. (L'exception, c'est quand j'ai des
indices pour des boucles imbriquées, par exemple :

int i, j ;
for ( i = 0 ; ... ) {
for ( j = 0 ; ... ) {
}
}
// Utiliser i et j...

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16



Avatar
kanze
Serge Paccalin wrote in message
news:<1mpe28z4wytq7$...
Le mercredi 29 octobre 2003 à 08:33, Zouplaz a écrit dans
fr.comp.lang.c++ :

Bonjour, excusez ma pollution mais j'ai récemment décidé d'écrire
maClasse* monPtr au lieu du contraire à savoir maClasse *monPtr.

J'ai cru lire quelque part que c'était la deuxième forme qui était
la bonne, quelqu'un peut confirmer ?


La deuxième est plus répandue à cause du « piège » suivant :

type_t* a, b;


Je ne sais pas pour le « plus répandue ». Si je régarde les divers
projets sur lesquels j'ai travaillé en C++, je n'ai jamais vu autre
chose que :

Type* var ;

En C++. En C, j'ai bien vu les trois variants.

Et quant au piège, je n'ai jamais vu une règle de programmation qui
permettait la déclaration de plusieurs variables dans une seule
instruction, que ce soit en C ou en C++.

Personnellement, je ne serais pas si strict, et je crois que je
permettrais la declaration des indices des boucles imbriquées. Sauf que
les boucles imbriquées n'apparaissent pour ainsi dire jamais dans mes
applications. Et de toute façon, les types d'indice sont toujours des
types entiers.

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16


Avatar
Fabien LE LEZ
On 3 Nov 2003 01:23:55 -0800, wrote:

Dans ce cas tu fais du C. En C++ les pointeurs ne s'utilisent que s'il
n'y a pas d'autre méthode.


En C++, les pointeurs servent quand on a besoin de pointeurs.


J'entendais "pointeurs nus".


Avatar
kanze
Fabien LE LEZ wrote in message
news:...
On 3 Nov 2003 01:23:55 -0800, wrote:

Dans ce cas tu fais du C. En C++ les pointeurs ne s'utilisent que
s'il n'y a pas d'autre méthode.


En C++, les pointeurs servent quand on a besoin de pointeurs.


J'entendais "pointeurs nus".


Alors, en C++, les pointeurs nus servent quand on a besoin de pointeurs
nus.

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16



Avatar
Michel Michaud
Dans news:,
"Michel Michaud" wrote in message
En C, j'utilise type *p. En C++, j'utilise type* p.
[...]


C'est marrant, parce que même en C (et ça depuis au moins vingt
ans), j'utilise « C* p ». Et j'interdis pour la plupart des
déclarations multiple dans une seule instruction. (L'exception,


Tu as toujours été un original ou un rebelle !

En plus, tu me sembles travailler à de bien drôles d'endroits...

:-)

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/


Avatar
kanze
"Michel Michaud" wrote in message
news:<uQYpb.18574$...
Dans news:,
"Michel Michaud" wrote in message
En C, j'utilise type *p. En C++, j'utilise type* p.
[...]


C'est marrant, parce que même en C (et ça depuis au moins vingt
ans), j'utilise « C* p ». Et j'interdis pour la plupart des
déclarations multiple dans une seule instruction. (L'exception,


Tu as toujours été un original ou un rebelle !


Tu crois ?

C'est vrai que vouloir écrire des logiciels qui marchent et que les
autres puissent comprendre, c'est souvent une idée originale. (Mais
avant que quelqu'un essaie de me faire dire plus que je ne dis, il ne
s'agit pas de ça ici. Où mettre le '*', c'est juste une convention
arbitraire, et n'influe ni sur la fonctionalité, ni sur la lisibilité du
code. Dans la mésure qu'on est cohérent, évidemment.)

En plus, tu me sembles travailler à de bien drôles d'endroits...


La preuve qu'ils étaient drôles, c'est qu'il voulait de moi.

Sérieusement, les première règles de codage que j'ai vue, c'était pour
du C, en 1987 environ, et elles interdisaient la déclaration de plus
d'un symbole par déclaration. Elles sortaient de NSC, qui les avaient
d'une boîte japonaise, je crois. Moi-même, je ne me rappelle plus si je
mettais déjà les * près du type avant, ou si c'était alors que j'ai
adopté la pratique, mais c'est sûr que je l'ai adopté avant de commencer
à faire du C++.

Et mon collègue le plus proche mettait des éspaces des deux côtés de
l'étoile, en les alignant, ainsi :

int * pi ;
char * pc ;
struct M * pm ;

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16



Avatar
kanze
"Michel Michaud" wrote in message
news:<uQYpb.18574$...
Dans news:,
"Michel Michaud" wrote in message
En C, j'utilise type *p. En C++, j'utilise type* p.
[...]


C'est marrant, parce que même en C (et ça depuis au moins vingt
ans), j'utilise « C* p ». Et j'interdis pour la plupart des
déclarations multiple dans une seule instruction. (L'exception,


Tu as toujours été un original ou un rebelle !

En plus, tu me sembles travailler à de bien drôles d'endroits...


Tout à fait au hazard... La position des '*' dans les exemples à
http://docs.sun.com/db/doc/817-1974/6mhlu8fdj?a=view pourrait
t'intéresser. Je crois qu'il y a des plus originaux que moi. Et c'est du
C, non du C++ :

void * handle;
int * dptr, (* fptr)();

ou

static void * (* fptr)() = 0;

Avec en plus un 0 pour le pointeur null. (C'est la première fois que je
vois ça en C.)

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16



Avatar
Michel Michaud
Dans news:,
"Michel Michaud" wrote in message
news:<uQYpb.18574$...
Tu as toujours été un original ou un rebelle !


Tu crois ?


Oui ! (ce n'est pas un défaut, au contraire ! Suivre le
troupeau et faire comme tout le monde, ce n'est pas ce qui
caractérise les gens les plus importants en général !)

C'est vrai que vouloir écrire des logiciels qui marchent et que les
autres puissent comprendre, c'est souvent une idée originale. (Mais


Euh ? (je ne trouve pas ça original du tout et je ne vois pas le
rapport avec ce dont on discute.)

avant que quelqu'un essaie de me faire dire plus que je ne dis, il
ne s'agit pas de ça ici.


Ah ! (alors pourquoi tu as dit ça ici ?)

Où mettre le '*', c'est juste une
convention arbitraire, et n'influe ni sur la fonctionalité, ni sur
la lisibilité du code. Dans la mésure qu'on est cohérent,
évidemment.)


Et même sans une parfaite cohérence, je vois mal pourquoi on
serait tellement dérangé par la position de * dans une
déclaration...

En plus, tu me sembles travailler à de bien drôles d'endroits...


La preuve qu'ils étaient drôles, c'est qu'il voulait de moi.


Alors si j'étais un employeur, je serais drôle moi aussi. :-)

(En fait, tout ce que tu dis, me donne l'impression que je
pourrais peut-être travailler dans l'industrie : je me trouve
trop rebelle et original pour le faire, mais d'après ce que tu
me dis, j'aurais peut-être pu trouver des employeurs intéressés !)

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/


Avatar
kanze
"Michel Michaud" wrote in message
news:<T59qb.7025$...
Dans news:,
"Michel Michaud" wrote in message
news:<uQYpb.18574$...
Tu as toujours été un original ou un rebelle !


Tu crois ?


Oui ! (ce n'est pas un défaut, au contraire ! Suivre le troupeau et
faire comme tout le monde, ce n'est pas ce qui caractérise les gens
les plus importants en général !)


Je ne l'ai pas pris comme une critique.

C'est vrai que vouloir écrire des logiciels qui marchent et que les
autres puissent comprendre, c'est souvent une idée originale. (Mais


Euh ? (je ne trouve pas ça original du tout et je ne vois pas le
rapport avec ce dont on discute.)


C'était plus ou moins une plaisanterie. Mais régarde un peu la qualité
des logiciels autour de toi -- est-ce qu'ils donnent réelement
l'impression que la qualité soit une facteur importante dans leur
développement.

[...]
Où mettre le '*', c'est juste une convention arbitraire, et n'influe
ni sur la fonctionalité, ni sur la lisibilité du code. Dans la
mésure qu'on est cohérent, évidemment.)


Et même sans une parfaite cohérence, je vois mal pourquoi on serait
tellement dérangé par la position de * dans une déclaration...


Ce n'est certainement pas l'aspect le plus important. Je préfère par
exemple une incohérence dans la position des '*' à une incohérence dans
les conventions de nommage. Mais tant qu'à faire, soyons cohérents
partout.

En plus, tu me sembles travailler à de bien drôles d'endroits...


La preuve qu'ils étaient drôles, c'est qu'il voulait de moi.


Alors si j'étais un employeur, je serais drôle moi aussi. :-)

(En fait, tout ce que tu dis, me donne l'impression que je pourrais
peut-être travailler dans l'industrie : je me trouve trop rebelle et
original pour le faire, mais d'après ce que tu me dis, j'aurais
peut-être pu trouver des employeurs intéressés !)


L'industrie, c'est très grande, et très amorphe. Il y a de tout.

Maintenant, si on parle de la partie de l'industrie qui produit des
logiciels de qualité, c'est plus complexe. Un peu d'originalité, c'est
bien, mais il ne faut pas perdre de vue que le développement logiciel
est un travail d'équipe, et qu'il faut s'entendre avec les autres.

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16



Avatar
kanze
"Michel Michaud" wrote in message
news:<T59qb.7025$...
Dans news:,
"Michel Michaud" wrote in message
news:<uQYpb.18574$...
Tu as toujours été un original ou un rebelle !


Tu crois ?


Oui ! (ce n'est pas un défaut, au contraire ! Suivre le troupeau et
faire comme tout le monde, ce n'est pas ce qui caractérise les gens
les plus importants en général !)


Je ne l'ai pas pris comme une critique.

C'est vrai que vouloir écrire des logiciels qui marchent et que les
autres puissent comprendre, c'est souvent une idée originale. (Mais


Euh ? (je ne trouve pas ça original du tout et je ne vois pas le
rapport avec ce dont on discute.)


C'était plus ou moins une plaisanterie. Mais régarde un peu la qualité
des logiciels autour de toi -- est-ce qu'ils donnent réelement
l'impression que la qualité soit une facteur importante dans leur
développement.

[...]
Où mettre le '*', c'est juste une convention arbitraire, et n'influe
ni sur la fonctionalité, ni sur la lisibilité du code. Dans la
mésure qu'on est cohérent, évidemment.)


Et même sans une parfaite cohérence, je vois mal pourquoi on serait
tellement dérangé par la position de * dans une déclaration...


Ce n'est certainement pas l'aspect le plus important. Je préfère par
exemple une incohérence dans la position des '*' à une incohérence dans
les conventions de nommage. Mais tant qu'à faire, soyons cohérents
partout.

En plus, tu me sembles travailler à de bien drôles d'endroits...


La preuve qu'ils étaient drôles, c'est qu'il voulait de moi.


Alors si j'étais un employeur, je serais drôle moi aussi. :-)

(En fait, tout ce que tu dis, me donne l'impression que je pourrais
peut-être travailler dans l'industrie : je me trouve trop rebelle et
original pour le faire, mais d'après ce que tu me dis, j'aurais
peut-être pu trouver des employeurs intéressés !)


L'industrie, c'est très grande, et très amorphe. Il y a de tout.

Maintenant, si on parle de la partie de l'industrie qui produit des
logiciels de qualité, c'est plus complexe. Un peu d'originalité, c'est
bien, mais il ne faut pas perdre de vue que le développement logiciel
est un travail d'équipe, et qu'il faut s'entendre avec les autres.

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16



1 2 3 4