Un tableau de char* dans une structure ?

a marqué ce sujet comme résolu.

En revanche

1
char* toto = {'t', 'a', 't', 'a',/*...*/ 'i'};

Est juste. […].

Ricocotam

Heu… Non, c'est faux : là tu assignes une constante entière (la valeur de 't') à ton pointeur toto. Cela revient exactement au même que si tu avais écrit :

1
char *p = 't';
+0 -0

modifier une chaîne de caractère déclarée ainsi est un comportement indéterminé (si mes souvenirs sont bons) et amène bien souvent un segfault.

informaticienzero

en effet, la section 6.4.5 de la norme (String literals) indique

It is unspecified whether these arrays are distinct provided their elements have the appropriate values. If the program attempts to modify such an array, the behavior is undefined.

et on a d'ailleurs plus loin (dans 6.7.8 Initialization) un exemple

1
char *p = "abc";

En indiquant que ce code définit p avec pour type "pointeur sur char" et l'initialise pour pointer sur un objet de type "tableau de char" de longueur 4 dont les éléments sont initialisés par une chaine littérale de caractères. Si une tentative est faite d'utiliser p pour modifier le contenu du tableau, le comportement est indéfini.

+0 -0

Euh … Ok mais :

1
char * const toto = "tata et titi";

Ne protège pas la modification de la chaine. Ça protège la modification du pointeur toto.

C'est pas plutôt :

1
char const * toto = "tata et titi";

ou

1
const char * toto = "tata et titi";

Que vous-vouliez écrire ?

+3 -0

Euh … Ok mais :

1
char * const toto = "tata et titi";

Ne protège pas la modification de la chaine. Ça protège la modification du pointeur toto.

C'est pas plutôt :

1
char const * toto = "tata et titi";

ou

1
const char * toto = "tata et titi";

Que vous-vouliez écrire ?

ache

C'est pas impossible, je ne te cache pas que depuis que je fais du C++ je n'ai plus l'habitude de manipuler des pointeurs nus et des chaînes-C.

PS : depuis quand tu me vouvoie ? ^^

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte