Chadrick
Il n'y a pas de "const * char". Il ne compilera pas. Je suppose que ce que vous vouliez dire est "char * const", par rapport à "const char *".
Ils sont complètement différents.
char * const p1;
déclare un pointeur constant à travers lequel vous pouvez avoir à la fois un accès en lecture et en écriture à un char. Mais le pointeur lui-même est une constante et vous ne pouvez PAS le changer. Comme toutes les autres variables constantes, vous devez l'initialiser avec une valeur constante en même temps qu'elle est déclarée. Vous n'êtes pas autorisé à le définir plus tard dans le code.
caractère const * p2;
déclare un pointeur via lequel vous pouvez accéder à un caractère mais vous ne pouvez pas le modifier via ledit pointeur. Mais le pointeur lui-même peut être modifié.
Veuillez noter qu'il existe un mythe selon lequel beaucoup de gens, y compris certains avec plusieurs décennies d'expérience en programmation, pensent que "const char *" signifie un pointeur vers un caractère constant. C'est totalement faux. "const char *" signifie uniquement que le caractère ne peut pas être modifié à l'aide du pointeur. Il peut très bien s'agir d'un caractère régulier, modifiable, modifiable par d'autres moyens ou d'autres pointeurs. C'est juste que le compilateur ne vous permettrait PAS de changer cette direction de char via le pointeur de char const.
Un vrai caractère const n'est pas modifiable du tout, peu importe comment vous essayez. Un véritable caractère const peut être placé en mémoire morte, il est donc tout simplement physiquement impossible de le modifier au moment de l'exécution. Ou il peut ne se voir allouer aucun espace de stockage et être utilisé directement là où ledit caractère const est référencé. Dans ce dernier cas, il n'y a certainement aucun moyen de dériver un pointeur pour pointer sur le caractère, car il n'occupe aucun espace de stockage.
Gardez donc à l'esprit que "const char *" n'est PAS "un pointeur vers un caractère constant".
Qu'en est-il de "const char[]". C'est différent de "const char*". Dans le cas "const char[]", il définit un tableau de caractères constant et le même nom de variable fait référence à la fois au tableau et à un pointeur vers le début du tableau.
Elle est en effet constante dans ce cas.
Sandra
Const char * variable_name
déclare un pointeur vers un caractère constant. Nous ne pouvons pas utiliser ce pointeur pour modifier la valeur qui est pointée.
Const* char variable_name
nous ne pouvons déclarer aucun pointeur constant comme celui-ci.