cast vers un pointeur sur tableau - C - Programmation
Marsh Posté le 30-07-2005 à 11:50:54
Shabang a écrit : bonjour,
mais il manque le cast qui va bien. Merci d'avance |
C'est une manip sacrément glaiseuse... A éviter.
|
Attention quand même aux risques de débordement au-delà de tata[256-42] (à une vache près)
Marsh Posté le 30-07-2005 à 11:51:01
Citation : sans warning. |
Ouhla. Normal qu'il y ait un warning.
Tes variables toto et tata sont des "char **", et pour pointer sur une partie de toto il faut un "char *".
char *toto[256], *tata; |
EDIT : j'ai un doute de newbie : toto c'est un pointeur vers n zones de 256 char, ou c'est 256 pointeurs vers des chaînes de caractères ?
Marsh Posté le 30-07-2005 à 11:56:22
Elmoricq a écrit :
|
Non. Elles sont de type 'pointeur sur tableau de 256 char'. Rien à voir.
Marsh Posté le 30-07-2005 à 12:00:23
Elmoricq a écrit : EDIT : j'ai un doute de newbie : toto c'est un pointeur vers n zones de 256 char, ou c'est 256 pointeurs vers des chaînes de caractères ? |
Ok alors j'ouvre mon autre paupière et je regarde la précédence : le monsieur avait défini sa variable avec des parenthèses.
Je retourne me pieuter maintenant.
Emmanuel Delahaye a écrit : Non. Elles sont de type 'pointeur sur tableau de 256 char'. Rien à voir. |
J'avais généralisé son type à dessein. Par contre, dans ma réponse j'ai mal interprété ce que voulait le posteur initial.
Marsh Posté le 30-07-2005 à 12:00:38
ton code est bien compliqué, sachant que tab[i] correspond à *(tab + i) tu peux peut etre te contenter de faire un truc dans le style
Code :
|
comme l'a montré Emmanuel
Marsh Posté le 30-07-2005 à 12:02:43
oui, pas con le cast en void * effectivement...
bon c'est tellement gorre que de toute maniere je vais repenser la structure du truc. Mais par curiosité j'aimerais bien connaitre la réponse =]
un autre probleme du meme genre tiens: j'ai toto défini comme au-dessus, malloc-é de disons 10 * sizeof(*toto), et je veux copier n octets d'une source quelconque vers l'adresse du 6ème octet de chaque tableau de 256...
clairement,
Code :
|
mais imaginons que le [6] m'embete, et que je veux faire pointer tata de telle facon que je puisse remplacer &toto[i][6] par tata[i]: de quelle type sera alors déclaré tata?
encore merci
Marsh Posté le 30-07-2005 à 12:11:09
Shabang a écrit : un autre probleme du meme genre tiens: j'ai toto défini comme au-dessus, malloc-é de disons 10 * sizeof(*toto), et je veux copier n octets d'une source quelconque vers l'adresse du 6ème octet de chaque tableau de 256...
|
Mal à la tête. Avec des raisonnements aussi tordus, tu vas te casser les dents. Le secret de la réussite en informatique, c'est la simplicité.
Marsh Posté le 30-07-2005 à 12:12:36
ok, j'étudie ton exemple Emmanuel... merci
[Edit]Oui mais la j'ai envie de me casser la tete, et meme si je pourrais resoudre le pb assez facilement avec des structures adaptées, c'est par curiosité que je me pose la question (et puis le prog que je fais est loin d'etre simple a mettre en place, seule la partie initialisation est codée en C, les structures de données sont tordues car la partie qui suit l'init doit etre tres optimisée en vitesse, mais c'est un autre sujet)[/Edit]
Marsh Posté le 30-07-2005 à 12:14:20
Shabang a écrit : o
|
Pourquoi tu veux faire pointer &toto[i][6] ?
Pas plus simple de parcourir toto tout bêtement ? Et manier ainsi des chaînes toutes bêtes, au lieu de pointeurs sur chaînes ?
Quant au 6, tu l'auras toujours dans un coin si c'est du pré-défini.
A moins qu'il ne faille de temps en temps le changer, tu peux éventuellement en faire un #define.
'fin bon, j'ai le sentiment que tu te compliques les choses pour pas grand chose, là.
C'est pour faire quoi au juste ?
Marsh Posté le 30-07-2005 à 12:21:03
Emmanuel Delahaye a écrit : C'est une manip sacrément glaiseuse... A éviter.
|
gorre a souhait, mais c'est vu, thx.
Marsh Posté le 30-07-2005 à 11:42:08
bonjour,
j'ai:
je veux faire pointer tata sur le 42eme octet de toto (quelle idée, je sais) sans warning.
mais il manque le cast qui va bien. Merci d'avance