[DEBUTANT]Problème avec const char

Problème avec const char [DEBUTANT] - C++ - Programmation

Marsh Posté le 28-02-2004 à 12:08:08    

Comment définir correctement une constante contenant un texte ? Par exemple :
 

Code :
  1. const char VERSION[3] = "0.1";


 
ne fonctionne pas et  
 

Code :
  1. const char VERSION = '0.1';


 
ne m'affiche que le chiffre 1 à chaque fois que j'utilise la constante VERSION dans mon source.
 
Qu'est ce que je fais mal ???
 
Merci de votre aide,
JM

Reply

Marsh Posté le 28-02-2004 à 12:08:08   

Reply

Marsh Posté le 28-02-2004 à 12:19:14    

Code :
  1. const char* const VERSION = "0.1";


ou

Code :
  1. const std::string VERSION("0.1" );


Message édité par verdoux le 28-02-2004 à 12:21:00
Reply

Marsh Posté le 28-02-2004 à 12:37:42    

Merci beaucoup !
A+,
jm

Reply

Marsh Posté le 28-02-2004 à 12:44:13    

Dans ton premier exemple, pourquoi ne peut pas t-on écrire :
 

Code :
  1. cont char *version = "0.1";


 
puisque la logique voudrait que l'on définisse version comme un pointeur de type char, non ? Comment peut s'interpréter "en français" la syntaxe que tu m'as indiqué, à savoir :
 

Code :
  1. const char *const VERSION = "0.1";


 
??
Merci beaucoup d'avance de ces précisions,
JM

Reply

Marsh Posté le 28-02-2004 à 12:49:27    

const char* const : définit un pointeur constant sur une chaîne de caractères constante aussi ...
 
si tu met juste const char*, tu définis un pointeur (non constant) sur une chaîne de caractères constante, car le const viens après ce sur quoi il porte, sauf pour les types communs, pour lesquels il peut aussi être placé avant.
 
Corrigez-moi si je me trompe ;)

Reply

Marsh Posté le 28-02-2004 à 13:16:05    

NB : sur la politique de Linux (le noyau)
 
const char * const str ou const char str[] ?
 
Linux préfère la deuxième forme : en effet
- solution 1 : 1 pointeur plus une chaîne en mémoire en lecture seule, mémoire qui ne sera libéré qu'à la fin du programme (ici le noyau, et l'uptime ça peut durer)
- juste la chaîne, l'initialisation est faite dynamiquement, des que la portée dans laquelle le tableau est défini, tout disparait
 
évidemment, tout ça n'est que la politique de Linux, mais réfléchissez-y. Mais pour tout le monde, le pointeur ou la string va très bien

Reply

Marsh Posté le 28-02-2004 à 13:24:11    

pas bete, jusque la je faisait aucune distinction mais c vrai, tu veux dire que quand on sortdu bloc actuel, on perd le pointeur mais ce qui est au bout reste seul dans la foret hostile de la memoire ? le pauvre... :(


---------------
Plus tu pedales moins vite Moins tu avances plus vite
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed