GOOGLE ADS

mercredi 27 avril 2022

Débutant : Les chaînes définies sont-elles toutes définies sur NULL ?

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:

  • Toujours?

  • Parfois, selon le compilateur?

  • Jamais?


  • 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

    Comment utiliseriez-vous .reduce() sur des arguments au lieu d'un tableau ou d'un objet spécifique ?

    Je veux définir une fonction.flatten qui aplatit plusieurs éléments en un seul tableau. Je sais que ce qui suit n'est pas possible, mais...