Rumah >pembangunan bahagian belakang >C++ >Adakah Ahli Struktur C Dimulakan kepada Sifar secara Lalai?

Adakah Ahli Struktur C Dimulakan kepada Sifar secara Lalai?

Susan Sarandon
Susan Sarandonasal
2024-12-15 06:06:12683semak imbas

Are C   Struct Members Initialized to Zero by Default?

Adakah Ahli Struktur C Dimulakan kepada 0 secara Lalai?

Nilai ahli struktur C yang tidak dimulakan tidak dijamin menjadi 0. Untuk memulakannya secara eksplisit ahli, gunakan senarai permulaan:

struct Snapshot
{
    double x; 
    int y;
};

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

Sebagai alternatif, anda boleh memulakan struct menggunakan sintaks {}:

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

Perhatikan bahawa menggunakan {} untuk pemulaan nilai berfungsi secara rekursif, walaupun untuk struct bersarang:

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

Jika struct mempunyai pembina, anda mesti mulakan secara eksplisit ahli dalam pembina tersebut:

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

Sebagai alternatif, anda boleh menggunakan lalai sintaks permulaan nilai x(), y() untuk mengabaikan jenis dan menetapkan nilai awal yang sesuai (0 untuk int, 0.0 untuk berganda, dsb.):

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

Ini amat berguna untuk templat.

Atas ialah kandungan terperinci Adakah Ahli Struktur C Dimulakan kepada Sifar secara Lalai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn