initialisation d'un tableau de pointeur - C - Programmation
Marsh Posté le 25-08-2009 à 15:42:17
Citation : qu'il falait toujours initialisé un pointeur à NULL. |
pas toujours, ça dépend de son utilisation. Disons que c'est moins risqué et plus déterministe, mais si tu est sûr de donner une bonne valeur à ton pointeur avant utilisation, pas de problème à ne pas l'initialiser. Si c'était obligatoire, le langage s'en chargerait, comme en Java. Idem pour mettre à NULL après libération, c'est souvent inutile.
Le nombre de fois que je vois ça :
Code :
|
Dans ton cas, si tu veux vraiment mettre les pointeurs à NULL, tu peux faire :
Code :
|
Marsh Posté le 25-08-2009 à 15:43:29
jesus_christ a écrit :
pas toujours, ça dépend de son utilisation. Disons que c'est moins risqué et plus déterministe, mais si tu est sûr de donner une bonne valeur à ton pointeur avant utilisation, pas de problème à ne pas l'initialiser. Si c'était obligatoire, le langage s'en chargerait, comme en Java. Idem pour mettre à NULL après libération, c'est souvent inutile. Le nombre de fois que je vois ça :
Dans ton cas, si tu veux vraiment mettre les pointeurs à NULL, tu peux faire :
|
1) on parle C
2) useless memset/fill_n of the week.
Marsh Posté le 25-08-2009 à 15:46:59
1) merde je me croyais dans la section C++
2) ... = { 0 }; ça marche en C ça ? Je dirais oui pour un POD en C++, un tableau en C je suis pas sûr.
Marsh Posté le 25-08-2009 à 15:51:46
merci de répondre mais...
heuu, donc c'est quoi la réponse à ma question au final?
Marsh Posté le 25-08-2009 à 16:25:14
merci,
donc si je fais un :
int* Trame[NombreClient] = { };
ça marchera? tout les NombreClient pointeurs de mon tableau seront initialisés?
Marsh Posté le 25-08-2009 à 16:57:18
ah ben j'ai appris un truc...
Ca marche aussi pour les tableaux non statiques, et c'est concrètement supporté par les compilos ? Ca me semble à la fois légal et obscur comme syntaxe.
Marsh Posté le 25-08-2009 à 17:08:07
effectivement cela semble fonctionner.
merci
Resolu! (enfin on ne creusera pas pour savoir pourquoi ça marche)
Marsh Posté le 25-08-2009 à 17:39:15
ProGrammeHeure a écrit : effectivement cela semble fonctionner. |
Bah, c'est pas compliqué : les { } sont la syntaxe pour initialiser un tableau. Le C s'attends à des valeurs sépararées par des virgules et s'il manque des valeurs, il y aura un 0 à la place. Ça marche aussi pour les structures d'ailleurs.
Marsh Posté le 25-08-2009 à 13:40:06
Bonjour,
Pour me présenté :
Newbies, windows XP, IDE dev c++, programme en c client serveur.
voila mon code :
bon j'ai vu qu'il falait toujours initialisé un pointeur à NULL.
mais dans le cas d'un Tableau de pointeur comment fait-on?
j'explique mon code/intention vite fait:
je souhaite lire un fichier a différent endroit selon le client, et le caractere lu par le client dans une trame qui lui sera envoyée.
ces pointeurs de lecture sont donc les pointeurs contenus dans chaque case du tableau Trame[].
si je ne suis pas assez precis, n'hesitez pas à me demander plus d'informaion.
---------------
De tous ceux qui n'ont rien à dire, les plus agréables sont ceux qui se taisent.