Rumah >pembangunan bahagian belakang >C++ >Adakah Ahli C Struct Secara Automatik Dimulakan Sifar?

Adakah Ahli C Struct Secara Automatik Dimulakan Sifar?

DDD
DDDasal
2024-12-05 04:36:10180semak imbas

Are C   Struct Members Automatically Zero-Initialized?

Nilai Permulaan Ahli Struktur dalam C

Pertimbangkan struct berikut:

struct Snapshot
{
    double x; 
    int y;
};

Jika struct diisytiharkan tanpa permulaan, adakah ahlinya ditetapkan secara automatik kepada 0?

Jawapan:

Tidak, ahli tidak dimulakan secara automatik kepada 0. Untuk menetapkannya kepada 0, permulaan eksplisit diperlukan:

Snapshot s = {0,0};

Permulaan Lain Pilihan:

  • Permulaan Nilai ({}): Memulakan semua ahli kepada nilai lalai mereka, mis., 0 untuk jenis angka.
Snapshot s = {}; // All members set to 0
  • Pembina Lalai: Jika struct mempunyai pembina lalai dengan pemula ahli, ia akan digunakan untuk pemula tersirat.
struct Snapshot {
    int x = 0;
    double y = 0.0;
};

Snapshot s; // x = 0, y = 0.0
  • Pembina dengan Permulaan Ahli: Permulaan tersuai boleh dilakukan menggunakan pembina.
struct Snapshot {
    Snapshot(int x, double y) : x(x), y(y) { }
};

Snapshot s(0, 0.0); // x = 0, y = 0.0

Nota: Pemulaan pembina tidak boleh dilakukan jika terdapat agregat senarai pemula hadir dalam pengisytiharan struct.

Atas ialah kandungan terperinci Adakah Ahli C Struct Secara Automatik Dimulakan Sifar?. 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