Rumah >pembangunan bahagian belakang >C++ >Adakah Ahli Struktur C Dimulakan kepada Sifar 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!