Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Struktur dan Tatasusunan Automatik Dimulakan Separa dalam C dan C?

Bagaimanakah Struktur dan Tatasusunan Automatik Dimulakan Separa dalam C dan C?

DDD
Lepaskan: 2024-12-19 05:32:21
asal
186 orang telah melayarinya

How are Automatic Structures and Arrays Partially Initialized in C and C  ?

Pemulaan Separa Struktur dan Tatasusunan Automatik dalam C dan C

Manual Rujukan GNU C menyatakan bahawa jika pembolehubah struktur tidak dimulakan, nilai ahlinya tidak dapat ditentukan. Walau bagaimanapun, piawaian tidak mentakrifkan permulaan separa bagi struktur atau tatasusunan.

Istilah Permulaan Separa

"Pengamatan separa" merujuk kepada menyediakan beberapa, tetapi bukan semua, pemula untuk agregat (tatasusunan atau struktur).

Peraturan Permulaan untuk Struktur dan Tatasusunan Automatik

Piawaian C dan C menetapkan peraturan berikut untuk pemulaan struktur dan tatasusunan automatik:

  • Jika agregat dimulakan sepenuhnya (iaitu, terdapat pemula yang mencukupi untuk semua elemen atau ahli), elemen/ahli yang dimulakan diberikan nilai yang ditentukan, manakala selebihnya elemen/ahli adalah dimulakan sifar (untuk jenis kamiran) atau dimulakan NULL (untuk jenis penunjuk).
  • Jika agregat tidak dimulakan, semua elemen/ahli adalah tidak tentu.

Gelagat Permulaan Separa

Walaupun permulaan separa adalah tidak ditakrifkan secara eksplisit dalam piawaian, semua penyusun arus perdana mengikut gelagat berikut:

  • Untuk tatasusunan automatik, jika terdapat lebih sedikit pemula daripada saiz tatasusunan, elemen yang tidak dimulakan akan dimulakan kepada 0.
  • Untuk struktur automatik, jika terdapat lebih sedikit pemula daripada bilangan ahli struktur, ahli yang tidak dimulakan adalah dimulakan nilai. Dalam C , ini bermakna ahli data kelas dimulakan lalai, manakala ahli data bukan kelas dimulakan sifar.

Contoh

C berikut kod memulakan sebahagian struktur:

struct S {
    int a;
    char* b;
    int c;
};

S s = {1, "asdf"};
Salin selepas log masuk

Dalam contoh ini, s.a dimulakan kepada 1, s.b dimulakan kepada "asdf", dan s.c dimulakan sifar kerana ia tidak dimulakan secara eksplisit.

Atas ialah kandungan terperinci Bagaimanakah Struktur dan Tatasusunan Automatik Dimulakan Separa dalam C dan C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan