C ++ Catatan: Array Inisialisasi memiliki daftar yang bagus atas inisialisasi array. Saya punya
int array[100] = {-1};
mengharapkannya menjadi penuh dengan -1 tetapi tidak, hanya nilai pertama dan sisanya adalah 0 dicampur dengan nilai acak.
Kode
int array[100] = {0};
berfungsi dengan baik dan menetapkan setiap elemen ke 0.
Apa yang saya lewatkan di sini .. Tidak bisakah seseorang menginisialisasi jika nilainya tidak nol?
Dan 2: Apakah inisialisasi default (seperti di atas) lebih cepat daripada loop biasa melalui seluruh array dan menetapkan nilai atau apakah itu melakukan hal yang sama?
{0}bukan kasus khusus untuk struct atau array. Aturannya adalah elemen tanpa inisialisasi diinisialisasi seolah-olah mereka memiliki 0inisialisasi. Jika ada agregat bersarang (mis. struct x array[100]) Maka inisialisasi diterapkan pada non-agregat dalam urutan "baris-utama"; kawat gigi secara opsional dapat dihilangkan dengan melakukan hal ini. struct x array[100] = { 0 }valid dalam C; dan valid dalam C ++ selama anggota pertama struct Xaccepts 0sebagai initializer.
{ 0 }tidak istimewa dalam C, tetapi jauh lebih sulit untuk menentukan tipe data yang tidak dapat diinisialisasi dengan itu karena tidak ada konstruktor dan dengan demikian tidak ada cara untuk berhenti 0dari yang secara implisit dikonversi dan ditugaskan ke sesuatu .