Maison >développement back-end >C++ >Les membres de la structure C sont-ils initialisés à zéro par défaut ?

Les membres de la structure C sont-ils initialisés à zéro par défaut ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-15 06:06:12682parcourir

Are C   Struct Members Initialized to Zero by Default?

Les membres d'une structure C sont-ils initialisés à 0 par défaut ?

Il n'est pas garanti que les valeurs des membres non initialisés d'une structure C soient 0. Pour les initialiser explicitement membres, utilisez une liste d'initialisation :

struct Snapshot
{
    double x; 
    int y;
};

Snapshot s = {0, 0}; // Explicitly initialize members to 0

Vous pouvez également initialiser la structure en utilisant le {} syntaxe :

Snapshot s = {}; // Value initializes all members to 0

Notez que l'utilisation de {} pour l'initialisation de la valeur fonctionne de manière récursive, même pour les structures imbriquées :

struct Parent { Snapshot s; };
Parent p = {}; // Value initializes both p and p.s to 0

Si la structure a des constructeurs, vous devez explicitement initialiser les membres de ceux-ci constructeurs :

struct Snapshot {
    int x;
    double y;
    Snapshot(): x(0), y(0) { } // Initialize members in the constructor
};

Vous pouvez également utiliser la syntaxe d'initialisation des valeurs par défaut x(), y() pour ignorer le type et attribuez une valeur initiale appropriée (0 pour int, 0,0 pour double, etc.) :

Snapshot(): x(), y() { } // Value initializes both x and y to 0

Cela peut être particulièrement utile pour les modèles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn