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

  FORUM HardWare.fr
  Programmation
  C

  conversion adresse de tableau de pointeurs

 



 Mot :   Pseudo :  
 
 Page :   1  2  3  4
Page Précédente
Auteur Sujet :

conversion adresse de tableau de pointeurs

n°747338
cricri_
Posté le 01-06-2004 à 14:06:17  profilanswer
 

Alors si je fais :
 

Code :
  1. short * buf[2][10];
  2. short ** GetBuffer(void)
  3. {
  4. return( buf[0]);
  5. }


Pas de pb. Mais si j'écris :

Code :
  1. short *** GetBuffer(void)
  2. {
  3. return( buf);
  4. }


j'ai une erreur comme quoi le type est incompatible, je peux faire un cast mais bon, si je peux éviter et comprendre mon erreur ...

mood
Publicité
Posté le 01-06-2004 à 14:06:17  profilanswer
 

n°747342
Joel F
Real men use unique_ptr
Posté le 01-06-2004 à 14:07:26  profilanswer
 

pointeur != tableau attention.
 
y a un topic sur ce genre d emanip un peu plus bas dans le forum.

n°747355
cricri_
Posté le 01-06-2004 à 14:14:53  profilanswer
 

Joel F a écrit :

pointeur != tableau attention.


vi, ça je sais bien, c'est vrai dans les 2 cas, mais je ne vois pas bien pourquoi l'erreur n'arrive que dans un seul cas. Vais essayer de trouver cet autre topic, merci.

n°747778
vivelec
Posté le 01-06-2004 à 18:46:03  profilanswer
 

En fait, le pointeur de pointeur de pointeur n'existe pas.
Concrètement, tu as droit à short *, short **, mais en aucun cas à short ***.
on utilise dans ce cas void * [N] qui te permet de rajouter les dimensions attendues.

n°747783
Joel F
Real men use unique_ptr
Posté le 01-06-2004 à 18:48:20  profilanswer
 

vivelec a écrit :

En fait, le pointeur de pointeur de pointeur n'existe pas.
Concrètement, tu as droit à short *, short **, mais en aucun cas à short ***.
on utilise dans ce cas void * [N] qui te permet de rajouter les dimensions attendues.


 
n'importe quoi ....
short*** est parfaitement supporté

n°747800
vivelec
Posté le 01-06-2004 à 18:58:32  profilanswer
 

Joel F a écrit :

n'importe quoi ....
short*** est parfaitement supporté


Retourne à tes standards ...
Il est peut-être supporté par certains compilateurs( dont tu me donneras les versions et OS), mais :  
1) ce n'est pas standard
2) dans ce cas, ce n'est absolument pas portable.

n°747891
bjone
Insert booze to continue
Posté le 01-06-2004 à 19:47:42  profilanswer
 

:??:

n°747896
bjone
Insert booze to continue
Posté le 01-06-2004 à 19:50:51  profilanswer
 

c'est quoi qui n'est pas (censé être) standard ?
plus de deux niveau de déréférencement ?
ou de coupler ça avec un short ?

n°747904
vivelec
Posté le 01-06-2004 à 19:52:53  profilanswer
 

Ben, oui, désolé, ce n'est pas standard (cc hp-ux, solaris, aix, ...).

n°747908
Taz
bisounours-codeur
Posté le 01-06-2004 à 19:55:27  profilanswer
 

vivelec a écrit :

En fait, le pointeur de pointeur de pointeur n'existe pas.

Fortune !
 
et tu dis quoi quand tu vois
 

Code :
  1. #include <stdio.h>
  2. void f() { puts("plop" ); }
  3. int main()
  4. {
  5.    void (*pf)() = &f;
  6.    (**************************************pf)();
  7. }

mood
Publicité
Posté le 01-06-2004 à 19:55:27  profilanswer
 

n°747955
vivelec
Posté le 01-06-2004 à 20:10:00  profilanswer
 

Je dis que le compilateur fait bien son travail et qu'il corrige les conneries que tu écris.
Cela n'a cependant strictement aucun rapport avec short ***.
Passe un coup de lint, et tu verras ...

n°747959
Taz
bisounours-codeur
Posté le 01-06-2004 à 20:11:52  profilanswer
 

mince si lint le dit ... faudrait voir à prévenir tout le monde alors

n°747961
Taz
bisounours-codeur
Posté le 01-06-2004 à 20:12:44  profilanswer
 

j'ai une question con, t'en fais quoi du short*** que tu récupères, vu que tu sais plus les dimensions ?

n°747963
bjone
Insert booze to continue
Posté le 01-06-2004 à 20:16:19  profilanswer
 

vivelec a écrit :

Ben, oui, désolé, ce n'est pas standard (cc hp-ux, solaris, aix, ...).


 
c'est pas une preuve de non-conformité...

n°747969
Taz
bisounours-codeur
Posté le 01-06-2004 à 20:21:51  profilanswer
 

non mais honnêtement, pourquoi selon toi ça serait pas standard ?

n°747970
vivelec
Posté le 01-06-2004 à 20:22:34  profilanswer
 

bjone a écrit :

c'est pas une preuve de non-conformité...


Disons que l'on tente, dans la mesure du possible d'écrire du code portable, propre, et aux normes implicites du C.
Maintenant, chacun est libre de faire ce qu'il veut avec son compilo.
Je dis juste que si ça marche avec le votre ou gcc, tant mieux.
Mais méfiez-vous, ce n'est absolument pas standard (comme les écritures à la C99).
Il me semble cependant qu'avant de ternir l'image du C, le mieux est de prendre de bonnes habitudes.
Quant à lint, oui, si lint le dit, ton code est pourri.

n°747982
vivelec
Posté le 01-06-2004 à 20:26:24  profilanswer
 

Taz a écrit :

non mais honnêtement, pourquoi selon toi ça serait pas standard ?


Selon moi, ce n'est pas standard pour les raisons suivantes :  
- les compilateurs "standard" constructeurs répondent à des certaines nomres dont je ne me souvient pas les noms et peuvent être pour cela casse-couille.
- je me suis déjà cassé les dents dessus. Sur de l'aix, ou du solaris et hors gcc, ça ne se compile pas.
C'est dommage, car bien pratique.
Il faut cependant bien que les compilateurs aient des limites.

n°747987
bjone
Insert booze to continue
Posté le 01-06-2004 à 20:29:56  profilanswer
 

c'est que ces compilos sont ptet à certains point de vue un peu bouseux alors... (et qu'ils partagent un source commun :/ pour certaines parties)


Message édité par bjone le 01-06-2004 à 20:30:08
n°747988
bjone
Insert booze to continue
Posté le 01-06-2004 à 20:31:58  profilanswer
 

vivelec a écrit :

Disons que l'on tente, dans la mesure du possible d'écrire du code portable, propre, et aux normes implicites du C.
Maintenant, chacun est libre de faire ce qu'il veut avec son compilo.
Je dis juste que si ça marche avec le votre ou gcc, tant mieux.
Mais méfiez-vous, ce n'est absolument pas standard (comme les écritures à la C99).
Il me semble cependant qu'avant de ternir l'image du C, le mieux est de prendre de bonnes habitudes.
Quant à lint, oui, si lint le dit, ton code est pourri.


 
mouef.

n°747991
Taz
bisounours-codeur
Posté le 01-06-2004 à 20:33:08  profilanswer
 

ça fait bizarre de voir un ~Taz mais qui se plante royalement ...

n°747994
Taz
bisounours-codeur
Posté le 01-06-2004 à 20:35:54  profilanswer
 

quant au morceau de code que j'ai filé, la comète, il est purement standard

n°748023
vivelec
Posté le 01-06-2004 à 21:00:16  profilanswer
 

Vous en faites ce que vous voulez.
Mais allez dire à même à SUN/HP/IBM (et à leurs clients) que leurs compilos partagent le même code bouseux et merdiques.
Quant à ton morceau de code, désolé, il n'est pas standard :  
- la casse majuscule/minuscule (GetBuffer) est typiquement une winauberie. Tous les noms de fonctions sont obligatoirement en minuscules, le caractère '_' peut être utilisé comme séparateur,
- si la fonction est locale, on rajoute "static" devant, sinon on la préfixe d'un code mnémotechnique sous peine de duplication de noms à l'édition de liens,
- pour retourner un pointeur, code ça en macros,
- je te donne la réponse à ton problème, et visiblement, tu ne comprends pas.

n°748030
cris56
Posté le 01-06-2004 à 21:03:46  profilanswer
 

il parlait pas de ce code la  !

n°748032
Taz
bisounours-codeur
Posté le 01-06-2004 à 21:05:28  profilanswer
 

putain, t'es chiant de déblatérer autant, ça tiendra jamais dans une seule fortune :o
 
1) chacun est libre de choisir ses identifiants, du moment que c'est en accord avec la grammaire
2) on mets static si on veut. c'est là une habitude de bon design, pas une obligation
3) c'est crade et personne ne t'oblige à faire ça.
4) c'est toi qui comprends pas que short *** est tout à faire valide
 
 
si t'es si malin, trouve nous un référence poure appuyer ta clownerie

n°748036
bjone
Insert booze to continue
Posté le 01-06-2004 à 21:06:20  profilanswer
 

désolé je voulais pas être vexant.
 
Taz parlait de ce qu'il avait posté, pas du code de cricri_.
 
la question est de savoir si le standard du C interdit plus de deux niveau de déférencement à la déclaration d'un pointeur.
 
mais franchement, ça me semble plus être une restriction d'implémentation historique. (après tout le monde en a)

n°748037
Taz
bisounours-codeur
Posté le 01-06-2004 à 21:06:33  profilanswer
 

vivelec a écrit :

on utilise dans ce cas void * [N] qui te permet de rajouter les dimensions attendues.

tiens je l'avais vu celle là :D
alors alors, c'est quoi la taille d'un void ?

n°748041
Taz
bisounours-codeur
Posté le 01-06-2004 à 21:07:50  profilanswer
 

bjone a écrit :


mais franchement, ça me semble plus être une restriction d'implémentation historique. (après tout le monde en a)

tout simplement parce qu'il y a une instruction assembleur pour le double déréférencement, pas plus. limitation limitante, mais compréhensible

n°748043
Joel F
Real men use unique_ptr
Posté le 01-06-2004 à 21:08:08  profilanswer
 

LOL et j'ai faillit louper ce fil ^^
 
@vivelec : tu debarque de 1975 ou quoi ??
Le standard à evoluer depusi tu sais [:dawa] et  
franchement c'est ni avec Taz ni avec moi qu'il
faut prendre ce ton hautain et trop sur de soi.


Message édité par Joel F le 01-06-2004 à 21:09:41
n°748057
Joel F
Real men use unique_ptr
Posté le 01-06-2004 à 21:16:31  profilanswer
 

Essaye ca :
 

Code :
  1. short * buf[2][10];
  2. short *** GetBuffer(void)
  3. {
  4. return( &buf[0]);
  5. }

n°748073
vivelec
Posté le 01-06-2004 à 21:21:51  profilanswer
 

Taz a écrit :

putain, t'es chiant de déblatérer autant, ça tiendra jamais dans une seule fortune :o
 
1) chacun est libre de choisir ses identifiants, du moment que c'est en accord avec la grammaire
2) on mets static si on veut. c'est là une habitude de bon design, pas une obligation
3) c'est crade et personne ne t'oblige à faire ça.
4) c'est toi qui comprends pas que short *** est tout à faire valide
 
 
si t'es si malin, trouve nous un référence poure appuyer ta clownerie


Attends, un forum, c'est avant tout fait pour partager son expérience et non pour donner des leçons.
Chacun est d'ailleurs libre de déblatérer à sa guise.
Je dis simplement que je n'ai jamais vu un short *** passé sur un compilo et ce n'est pas faute d'avoir essayé dans ma jeunesse.
Maintenant, si ça marche chez toi, très bien, je ne demande qu'à connaître ton compilateur et ton OS.
 
En résumé, intellectuellement parlant, un short *** voire plus est tout à fait compréhensible.
Simplement, à la compilation, ce n'est pas une écriture acceptée par tous les compilateurs, donc non portable.
C'est d'ailleurs visiblement, la cause du problème initial.
Quant aux normes, il y en a tellement (parfois contradictoires) qu'il est souvent difficile de s'y retrouver.
Le mieux est donc de se référer aux normes "implicites" et donc, au bon usage du C.

n°748081
Taz
bisounours-codeur
Posté le 01-06-2004 à 21:26:03  profilanswer
 

non, c'est portable, c'est du C ANSI minimum, du K&R certainement
 
après j'y peut quoi si t'as travailler avec des compilateurs mêmes pas foutu de compiler du C :/
 
y a pas de norme implicite : la norme ANSI c'est la plus répdandue, tu va pas commencer à nous faire le rabat joie parce que tu utilises les produits pourris de je sais pas quelle boîte. on y peut quoi nous si tu fais du C avec des compilateurs pas C

n°748083
Joel F
Real men use unique_ptr
Posté le 01-06-2004 à 21:27:35  profilanswer
 

vivelec a écrit :


Je dis simplement que je n'ai jamais vu un short *** passé sur un compilo et ce n'est pas faute d'avoir essayé dans ma jeunesse.
Maintenant, si ça marche chez toi, très bien, je ne demande qu'à connaître ton compilateur et ton OS.


 
alors :
Linux Mandrake 9.2,9.1 et 10.0 avec gcc 3.3.1
Windows 2k avec mygwyn 3.3, visual studio 6 et 7
 

vivelec a écrit :


C'est d'ailleurs visiblement, la cause du problème initial.


Non cf ma réponse
 

vivelec a écrit :


Le mieux est donc de se référer aux normes "implicites" et donc, au bon usage du C.


 
Non à la norme ANSI qui va bien voir à la norme C99


Message édité par Joel F le 01-06-2004 à 21:27:53
n°748098
vivelec
Posté le 01-06-2004 à 21:34:05  profilanswer
 

Joel F a écrit :

LOL et j'ai faillit louper ce fil ^^
 
@vivelec : tu debarque de 1975 ou quoi ??
Le standard à evoluer depusi tu sais [:dawa] et  
franchement c'est ni avec Taz ni avec moi qu'il
faut prendre ce ton hautain et trop sur de soi.


Encore une fois, faites ce que vous voulez, mais je vous déconseille simplement ce genre d'écriture.
Quant au ton hauntain et trop sûr de moi, si tu le dis, peut-être, mais je ne vois pas où et dans ce cas-là désolé.
Pour finir, le C a peu évolué depuis 75 ...

n°748101
Joel F
Real men use unique_ptr
Posté le 01-06-2004 à 21:34:52  profilanswer
 

vivelec a écrit :


Pour finir, le C a peu évolué depuis 75 ...


 
euh .... et le C99 c'est pour la Mére Denis peut etre ??

n°748117
vivelec
Posté le 01-06-2004 à 21:40:30  profilanswer
 

Taz a écrit :

non, c'est portable, c'est du C ANSI minimum, du K&R certainement
 
après j'y peut quoi si t'as travailler avec des compilateurs mêmes pas foutu de compiler du C :/
 
y a pas de norme implicite : la norme ANSI c'est la plus répdandue, tu va pas commencer à nous faire le rabat joie parce que tu utilises les produits pourris de je sais pas quelle boîte. on y peut quoi nous si tu fais du C avec des compilateurs pas C


On ne va pas polémiquer, mais les "n'importe quelles boites" et "produits pourris" que j'ai cités, ont la part belle du monde unix : solaris (sun), hp-ux (hp) et aix (ibm).
Quant aux normes implicites du C, si elles existent.

n°748122
Taz
bisounours-codeur
Posté le 01-06-2004 à 21:42:05  profilanswer
 

vivelec a écrit :

Pour finir, le C a peu évolué depuis 75 ...

ah bon ? ben tu ferais mieux te renseigner un peu alors. rien que les changements du C99 sont conséquents pour être étudier avec soin. Quant au C ANSI, rien que l'apparition d'une bibliothèque standard, c'est vrai que c'est peu.

n°748124
vivelec
Posté le 01-06-2004 à 21:42:26  profilanswer
 

Joel F a écrit :

euh .... et le C99 c'est pour la Mére Denis peut etre ??


La C99 n'est pas encore admise dans le mode industriel et je doute qu'elle le soit de sitôt.
A bon entendeur ... au cas où tu aurais un code à livrer pour un client.

n°748130
Joel F
Real men use unique_ptr
Posté le 01-06-2004 à 21:43:24  profilanswer
 

vivelec a écrit :

La C99 n'est pas encore admise dans le mode industriel et je doute qu'elle le soit de sitôt.
A bon entendeur ... au cas où tu aurais un code à livrer pour un client.


 
et oui j'en ai  [:joel f] et ca leur plait bien en plus

n°748131
Taz
bisounours-codeur
Posté le 01-06-2004 à 21:43:42  profilanswer
 

ah bon, et le noyau Linux, c'est du bidon ?

n°748133
vivelec
Posté le 01-06-2004 à 21:44:09  profilanswer
 

Taz a écrit :

ah bon ? ben tu ferais mieux te renseigner un peu alors. rien que les changements du C99 sont conséquents pour être étudier avec soin. Quant au C ANSI, rien que l'apparition d'une bibliothèque standard, c'est vrai que c'est peu.


Le C ANSI appartient principalement au monde unix.
Passe sous VMS et il n'est plus vraiment question de C ANSI.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4
Page Précédente

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

  conversion adresse de tableau de pointeurs

 

Sujets relatifs
Parcourir un tableau à colonnes variablessauver un tableau de short dans un format d'image
Pointeurs je comprends plus rienefacer les caractere d'un tableau de char
[C] obtenir une adresse de broadcast[HTML & PHP] Passage variable en adresse
Récupérer une adresse mac[perl] conversion d'hexa vers decimal
conversion CString à intProblème de tableau dynamique
Plus de sujets relatifs à : conversion adresse de tableau de pointeurs


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