0
votes

Réinitialiser une matrice Cons-Char en C ne donne pas d'erreur

Lors de l'initialisation d'une gamme de Cons-Chary, j'ai essayé de changer la chaîne et j'ai été capable de le modifier sans aucun problème.

J'apprendais comment initialiser une matrice de Cons-Char. Je pense que je fais une erreur ici que je ne suis pas capable de trouver. xxx

sortie:

1er init: wwww.google.com
2e init: ss -> ici, je m'attends à jeter une erreur


5 commentaires

Les pointeurs que vous définissez (non initialisent) ne sont pas constants; Les données qu'ils indiquent ne peuvent pas être modifiées via les pointeurs. Vous n'essayez pas de modifier les chaînes; Tout est bien.


Si les pointeurs étaient constants, vos missions généreraient des avertissements du compilateur.


1er init . Nah, les pointeurs sont d'abord initialisés par défaut. Et puis vous assignez une seconde fois avec "wwww.google.com" .


Const Char * STRS [10]; Définit STRS en tant que tableau de dix pointeurs à des caractères constants. Le tableau lui-même n'est pas constant, et n'est-ce pas non plus un éventail de personnages.


Incidemment, ce sont des affectations, pas des réinitialisations. L'initialisation est quelque chose qui se produit lors de la création d'un objet et vous ne pouvez pas le faire plus d'une fois.


3 Réponses :


3
votes
char* const s = "Hi";

0 commentaires

0
votes

Pour mettre cela en anglais simple (pas nécessairement à 100% précis mais sert à conceptualiser), ce xxx

initialise un tableau de conant strges qui ne contient aucun élément constant . Ainsi, les éléments de la matrice peuvent être changés mais le tableau lui-même ne peut pas être changé


0 commentaires

2
votes
const char * const strs[10] = {"www.google.com",
                               "https://www.google.com",
                               "www.google.com/",
                               "https://www.google.com/",
                               NULL, NULL };

0 commentaires