J'essaie de me souvenir de mes brèves expériences C d'il y a cinq ans.
J'aurais pu jurer que j'avais lu qu'une chaîne définie mais non initialisée était définie sur tous les NULL. En d'autres termes, que
char string[10];
composé de 10 caractères nuls, et que
char string[10] = "Kevin";
se compose des lettres 'K', 'e', 'v', 'i', 'n' et de cinq zéros.
Est-ce vrai:
Solution du problème
en d'autres termes, cette chaîne de caractères[10] ; composé de 10 caractères nuls,
Cela dépend où et de la variable.
char here_yes[10]; // 10 '\0' characters
int main() {
char here_no[10]; // 10 unknown garbage values
static char but_here_also_yes[10]; // also 10 '\0' characters
}
et cette chaîne de caractères[10] = "Kevin" ; se compose des lettres 'K', 'e', 'v', 'i', 'n' et de cinq zéros. Est-ce vrai: Toujours?
Oui. Si vous initialisez partiellement une chaîne ou une variable, le reste est rempli de '\0'
ou de zéros.
char this_has_10_nulls[10] = "";
int main() {
char this_has_ab_followed_by_8_nulls[10] = { 'a', 'b' };
static char this_has_Kevin_followed_by_5_nulls[10] = "Kevin";
}
Aucun commentaire:
Enregistrer un commentaire