Jean-Marc Bourguet wrote: (contrairement aux listes de paramètres dans les déclarations de fonctions, où void foo(Contact* contact[]); et void foo(Contact** contact); sont équivalents, ce qui constitue AMA une incohérence assez énorme dans la définition du langage - c'est pour cela que j'évite cette première écriture).
C'est à dire que tu privilégies toujours void foo(int *i) à void foo(int i[])
Moi, j'avoue que j'utilise l'un quand le code attend un tableau, et *i quand c'est une unique variable (enfin, en C, car en C++, c'est plus souvent deux itérateurs pour une séquence).
Marc Boyer -- Je ne respecte plus le code de la route à vélo depuis une double fracture due au fait que j'étais le seul à le respecter.
Falk Tannhäuser wrote:
Jean-Marc Bourguet wrote:
(contrairement aux listes de paramètres dans les déclarations
de fonctions, où
void foo(Contact* contact[]);
et
void foo(Contact** contact);
sont équivalents, ce qui constitue AMA une incohérence assez
énorme dans la définition du langage - c'est pour cela que
j'évite cette première écriture).
C'est à dire que tu privilégies toujours
void foo(int *i)
à
void foo(int i[])
Moi, j'avoue que j'utilise l'un quand le code attend un tableau,
et *i quand c'est une unique variable (enfin, en C, car en C++,
c'est plus souvent deux itérateurs pour une séquence).
Marc Boyer
--
Je ne respecte plus le code de la route à vélo depuis une double fracture
due au fait que j'étais le seul à le respecter.
Jean-Marc Bourguet wrote: (contrairement aux listes de paramètres dans les déclarations de fonctions, où void foo(Contact* contact[]); et void foo(Contact** contact); sont équivalents, ce qui constitue AMA une incohérence assez énorme dans la définition du langage - c'est pour cela que j'évite cette première écriture).
C'est à dire que tu privilégies toujours void foo(int *i) à void foo(int i[])
Moi, j'avoue que j'utilise l'un quand le code attend un tableau, et *i quand c'est une unique variable (enfin, en C, car en C++, c'est plus souvent deux itérateurs pour une séquence).
Marc Boyer -- Je ne respecte plus le code de la route à vélo depuis une double fracture due au fait que j'étais le seul à le respecter.
Jean-Marc Bourguet
Falk Tannhäuser writes:
Jean-Marc Bourguet wrote:
Contact ** contact; Contact * contact[]; Le premier declare un pointeur vers un pointeur vers Contact. On peut eventuellement faire pointer ce pointeur vers un tableau de pointeurs vers Contact mais autant utiliser std::vector<Contact*>. La seconde ecriture n'est valable que dans les declarations et definitions de fonctions, auquel cas elle est effectivement equivalente a la premiere. Pour declarer une variable (et non un parametre), il faut mettre la taille.
La seconde écriture sert aussi pour déclarer (sans le définir) un tableau dont on ne connaît pas la taille :
extern Contact* contact[];
J'avais oublie en effet ce cas.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Contact ** contact;
Contact * contact[];
Le premier declare un pointeur vers un pointeur vers Contact. On peut
eventuellement faire pointer ce pointeur vers un tableau de pointeurs
vers Contact mais autant utiliser std::vector<Contact*>.
La seconde ecriture n'est valable que dans les declarations et
definitions de fonctions, auquel cas elle est effectivement
equivalente a la premiere. Pour declarer une variable (et non un
parametre), il faut mettre la taille.
La seconde écriture sert aussi pour déclarer (sans le définir)
un tableau dont on ne connaît pas la taille :
extern Contact* contact[];
J'avais oublie en effet ce cas.
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Contact ** contact; Contact * contact[]; Le premier declare un pointeur vers un pointeur vers Contact. On peut eventuellement faire pointer ce pointeur vers un tableau de pointeurs vers Contact mais autant utiliser std::vector<Contact*>. La seconde ecriture n'est valable que dans les declarations et definitions de fonctions, auquel cas elle est effectivement equivalente a la premiere. Pour declarer une variable (et non un parametre), il faut mettre la taille.
La seconde écriture sert aussi pour déclarer (sans le définir) un tableau dont on ne connaît pas la taille :
extern Contact* contact[];
J'avais oublie en effet ce cas.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Alain Naigeon
"Laurent B" a écrit dans le message news: 41f79b0d$0$9750$
Bonjour , je souhaite déclarer un tableau de pointeur sur Contact . Contact etant une classe
on m'a proposé 2 choses ( qui sont sencé etre equivelente ) :
**contact *contact[]
Techiniquement c du chinoix pour moi
Euh... on peut évoquer le Chinois sans parler Chinois ;-)
--
Français *==> "Musique renaissance" <==* English midi - facsimiles - ligatures - mensuration http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/ Alain Naigeon - - Strasbourg, France
"Laurent B" <magus@free.fr> a écrit dans le message news:
41f79b0d$0$9750$636a15ce@news.free.fr...
Bonjour ,
je souhaite déclarer un tableau de pointeur sur Contact .
Contact etant une classe
on m'a proposé 2 choses ( qui sont sencé etre equivelente ) :
**contact
*contact[]
Techiniquement c du chinoix pour moi
Euh... on peut évoquer le Chinois sans parler Chinois ;-)
--
Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - anaigeon@free.fr - Strasbourg, France
c.a.d. un paremètre déclaré "tableau de toto" est interprété comme "pointeur de toto".
-- Horst
-- Lâche pas la patate!
James Kanze
Laurent B wrote:
je souhaite déclarer un tableau de pointeur sur Contact . Contact etant une classe
on m'a proposé 2 choses ( qui sont sencé etre equivelente ) :
**contact
C'est un pointeur à un pointeur.
*contact[]
C'est un tableau à un pointeur.
Ce sont deux choses bien différentes. Je ne sais pas où tu as l'idée qu'elles soient équivalentes. (Aussi, je dois ajouter qu'un C++, le deuxième est plutôt rare. En général, on préfère quelque chose comme :
std::vector< Contact* > contact ;
quand on veut un tableau.)
-- James Kanze home: www.gabi-soft.fr Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
Laurent B wrote:
je souhaite déclarer un tableau de pointeur sur Contact .
Contact etant une classe
on m'a proposé 2 choses ( qui sont sencé etre equivelente ) :
**contact
C'est un pointeur à un pointeur.
*contact[]
C'est un tableau à un pointeur.
Ce sont deux choses bien différentes. Je ne sais pas où tu as
l'idée qu'elles soient équivalentes. (Aussi, je dois ajouter
qu'un C++, le deuxième est plutôt rare. En général, on préfère
quelque chose comme :
std::vector< Contact* > contact ;
quand on veut un tableau.)
--
James Kanze home: www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
je souhaite déclarer un tableau de pointeur sur Contact . Contact etant une classe
on m'a proposé 2 choses ( qui sont sencé etre equivelente ) :
**contact
C'est un pointeur à un pointeur.
*contact[]
C'est un tableau à un pointeur.
Ce sont deux choses bien différentes. Je ne sais pas où tu as l'idée qu'elles soient équivalentes. (Aussi, je dois ajouter qu'un C++, le deuxième est plutôt rare. En général, on préfère quelque chose comme :
std::vector< Contact* > contact ;
quand on veut un tableau.)
-- James Kanze home: www.gabi-soft.fr Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
James Kanze
fabrizio wrote:
[...]
classeA a; //a est de type classeA classeA *a; //(*a) est de type classeA //donc a est de type 'pointeur sur classeA
Je connais l'argument, mais je ne sais pas si c'est un bon chemin à prendre. Ajoute un peu de const, et un typedef ou deux, et l'explication ne tient plus.
char **a; //a est un pointeur sur un pointeur de 'char' char *a[]; //ceci est équivalent à la précédente
Ce sont deux choses complétement différentes, tu veux dire. Le premier est un pointeur à un pointeur, le deuxième un tableau de pointeurs.
Sans le vrai code, il est impossible de comprendre où est l'erreur de compilation.
En effet.
Je m'excuse de corriger tes fautes d'orthographe/grammaire. Tout le monde à ses limites...
Tout à fait.
Il faut dire que bien programmer exige une forte attention aux détails. Comme l'orthographe ou la grammaire. Celui qui ne maîtrise pas l'un ne maîtrisera probablement pas l'autre.
-- James Kanze home: www.gabi-soft.fr Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
fabrizio wrote:
[...]
classeA a; //a est de type classeA
classeA *a; //(*a) est de type classeA
//donc a est de type 'pointeur sur classeA
Je connais l'argument, mais je ne sais pas si c'est un bon
chemin à prendre. Ajoute un peu de const, et un typedef ou deux,
et l'explication ne tient plus.
char **a; //a est un pointeur sur un pointeur de 'char'
char *a[]; //ceci est équivalent à la précédente
Ce sont deux choses complétement différentes, tu veux dire. Le
premier est un pointeur à un pointeur, le deuxième un tableau de
pointeurs.
Sans le vrai code, il est impossible de comprendre où est
l'erreur de compilation.
En effet.
Je m'excuse de corriger tes fautes d'orthographe/grammaire.
Tout le monde à ses limites...
Tout à fait.
Il faut dire que bien programmer exige une forte attention aux
détails. Comme l'orthographe ou la grammaire. Celui qui ne
maîtrise pas l'un ne maîtrisera probablement pas l'autre.
--
James Kanze home: www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
classeA a; //a est de type classeA classeA *a; //(*a) est de type classeA //donc a est de type 'pointeur sur classeA
Je connais l'argument, mais je ne sais pas si c'est un bon chemin à prendre. Ajoute un peu de const, et un typedef ou deux, et l'explication ne tient plus.
char **a; //a est un pointeur sur un pointeur de 'char' char *a[]; //ceci est équivalent à la précédente
Ce sont deux choses complétement différentes, tu veux dire. Le premier est un pointeur à un pointeur, le deuxième un tableau de pointeurs.
Sans le vrai code, il est impossible de comprendre où est l'erreur de compilation.
En effet.
Je m'excuse de corriger tes fautes d'orthographe/grammaire. Tout le monde à ses limites...
Tout à fait.
Il faut dire que bien programmer exige une forte attention aux détails. Comme l'orthographe ou la grammaire. Celui qui ne maîtrise pas l'un ne maîtrisera probablement pas l'autre.
-- James Kanze home: www.gabi-soft.fr Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
James Kanze
Jean-Marc Bourguet wrote:
fabrizio writes:
char **a; //a est un pointeur sur un pointeur de 'char' char *a[]; //ceci est équivalent à la précédente
Ah?
Tiens, on prend des leçons de Gaby ?
-- James Kanze home: www.gabi-soft.fr Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
Jean-Marc Bourguet wrote:
fabrizio <watch.the@stars.fr> writes:
char **a; //a est un pointeur sur un pointeur de 'char'
char *a[]; //ceci est équivalent à la précédente
Ah?
Tiens, on prend des leçons de Gaby ?
--
James Kanze home: www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
char **a; //a est un pointeur sur un pointeur de 'char' char *a[]; //ceci est équivalent à la précédente
Ah?
Tiens, on prend des leçons de Gaby ?
-- James Kanze home: www.gabi-soft.fr Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
James Kanze
fabrizio wrote:
char **a; //a est un pointeur sur un pointeur de 'char' char *a[]; //ceci est équivalent à la précédente
Ah?
Mea culpa si ce n'est pas le cas. Il me semblait qu'en C au moins ces deux syntaxes étaient équivalentes.
Jamais. En B, ils auraient été équivalent. S'il y avait eu des declarations pour les pointeurs en B.
-- James Kanze home: www.gabi-soft.fr Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
fabrizio wrote:
char **a; //a est un pointeur sur un pointeur de 'char'
char *a[]; //ceci est équivalent à la précédente
Ah?
Mea culpa si ce n'est pas le cas.
Il me semblait qu'en C au moins ces deux syntaxes étaient
équivalentes.
Jamais. En B, ils auraient été équivalent. S'il y avait eu des
declarations pour les pointeurs en B.
--
James Kanze home: www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
char **a; //a est un pointeur sur un pointeur de 'char' char *a[]; //ceci est équivalent à la précédente
Ah?
Mea culpa si ce n'est pas le cas. Il me semblait qu'en C au moins ces deux syntaxes étaient équivalentes.
Jamais. En B, ils auraient été équivalent. S'il y avait eu des declarations pour les pointeurs en B.
-- James Kanze home: www.gabi-soft.fr Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
James Kanze
Jean-Marc Bourguet wrote:
"Laurent B" writes:
je souhaite déclarer un tableau de pointeur sur Contact . Contact etant une classe
std::vector<Contact*> le_nom_du_tableau;
Contact* le_nom_du_tableau[la_taille_du_tableau];
on m'a proposé 2 choses ( qui sont sencé etre equivelente ) :> **contact *contact[]
Faudrait donner le nom du type. Donc
Contact ** contact; Contact * contact[];
Le premier declare un pointeur vers un pointeur vers Contact. On peut eventuellement faire pointer ce pointeur vers un tableau de pointeurs vers Contact mais autant utiliser std::vector<Contact*>.
La seconde ecriture n'est valable que dans les declarations et definitions de fonctions, auquel cas elle est effectivement equivalente a la premiere. Pour declarer une variable (et non un parametre), il faut mettre la taille.
-- James Kanze home: www.gabi-soft.fr Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
Jean-Marc Bourguet wrote:
"Laurent B" <magus@free.fr> writes:
je souhaite déclarer un tableau de pointeur sur Contact .
Contact etant une classe
std::vector<Contact*> le_nom_du_tableau;
Contact* le_nom_du_tableau[la_taille_du_tableau];
on m'a proposé 2 choses ( qui sont sencé etre equivelente ) :>
**contact
*contact[]
Faudrait donner le nom du type. Donc
Contact ** contact;
Contact * contact[];
Le premier declare un pointeur vers un pointeur vers Contact.
On peut eventuellement faire pointer ce pointeur vers un
tableau de pointeurs vers Contact mais autant utiliser
std::vector<Contact*>.
La seconde ecriture n'est valable que dans les declarations et
definitions de fonctions, auquel cas elle est effectivement
equivalente a la premiere. Pour declarer une variable (et non
un parametre), il faut mettre la taille.
--
James Kanze home: www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
je souhaite déclarer un tableau de pointeur sur Contact . Contact etant une classe
std::vector<Contact*> le_nom_du_tableau;
Contact* le_nom_du_tableau[la_taille_du_tableau];
on m'a proposé 2 choses ( qui sont sencé etre equivelente ) :> **contact *contact[]
Faudrait donner le nom du type. Donc
Contact ** contact; Contact * contact[];
Le premier declare un pointeur vers un pointeur vers Contact. On peut eventuellement faire pointer ce pointeur vers un tableau de pointeurs vers Contact mais autant utiliser std::vector<Contact*>.
La seconde ecriture n'est valable que dans les declarations et definitions de fonctions, auquel cas elle est effectivement equivalente a la premiere. Pour declarer une variable (et non un parametre), il faut mettre la taille.
-- James Kanze home: www.gabi-soft.fr Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
James Kanze
Jean-Marc Bourguet wrote:
korchkidu writes:
Laurent B wrote:
je souhaite déclarer un tableau de pointeur sur Contact . Contact etant une classe on m'a proposé 2 choses ( qui sont sencé etre equivelente ) : **contact *contact[] Techiniquement c du chinoix pour moi
Leu milleu dent ceux ca c du tylisez lait std::vector..;)
Une traduction en francais peut-etre?
Je crois qu'il s'est contenté de repondre dans la même langue que la poste initiale. Histoire de montrer à quel point ça rend ridicule et nuit à la compréhension.
-- James Kanze home: www.gabi-soft.fr Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
Jean-Marc Bourguet wrote:
korchkidu <korch_ki_du@yahoo.fr> writes:
Laurent B wrote:
je souhaite déclarer un tableau de pointeur sur Contact .
Contact etant une classe on m'a proposé 2 choses ( qui sont
sencé etre equivelente ) :
**contact
*contact[]
Techiniquement c du chinoix pour moi
Leu milleu dent ceux ca c du tylisez lait std::vector..;)
Une traduction en francais peut-etre?
Je crois qu'il s'est contenté de repondre dans la même langue
que la poste initiale. Histoire de montrer à quel point ça rend
ridicule et nuit à la compréhension.
--
James Kanze home: www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
je souhaite déclarer un tableau de pointeur sur Contact . Contact etant une classe on m'a proposé 2 choses ( qui sont sencé etre equivelente ) : **contact *contact[] Techiniquement c du chinoix pour moi
Leu milleu dent ceux ca c du tylisez lait std::vector..;)
Une traduction en francais peut-etre?
Je crois qu'il s'est contenté de repondre dans la même langue que la poste initiale. Histoire de montrer à quel point ça rend ridicule et nuit à la compréhension.
-- James Kanze home: www.gabi-soft.fr Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34