Rumah > pembangunan bahagian belakang > C++ > Sejauh manakah Kesatuan C/C, dan Mengapa?

Sejauh manakah Kesatuan C/C, dan Mengapa?

Barbara Streisand
Lepaskan: 2024-12-01 21:35:11
asal
307 orang telah melayarinya

How Big is a C/C   Union, and Why?

Memahami Saiz Kesatuan dalam C/C

Kesatuan ialah struktur data serba boleh yang terdiri daripada sekumpulan pembolehubah yang berkongsi lokasi ingatan yang sama. Saiz kesatuan sering menjadi topik perbincangan di kalangan pengaturcara C/C.

Adakah Saiz Kesatuan Padan dengan Saiz Jenis Data Terbesar Di Dalamnya?

Ya, saiz kesatuan adalah sama dengan saiz ahli terbesarnya. Ini kerana semua ahli kesatuan tinggal di lokasi ingatan yang sama, dan pengkompil memperuntukkan ruang untuk ahli terbesar bagi memastikan terdapat ruang yang cukup untuk mana-mana ahli lain.

Bagaimana Adakah Pengkompil Kira Pergerakan Penunjuk Tindanan?

Apabila elemen kesatuan diakses, pengkompil mengira offset elemen itu dari awal lokasi ingatan kesatuan. Penunjuk tindanan kemudiannya dialihkan dengan sewajarnya. Walau bagaimanapun, walaupun jenis data yang lebih kecil dalam kesatuan aktif, penuding tindanan dilaraskan berdasarkan saiz jenis data terbesar.

Contoh:

Pertimbangkan kesatuan berikut:

union {
  short x;
  int y;
  long long z;
};
Salin selepas log masuk

Dalam kes ini, saiz kesatuan akan sama dengan saiz panjang panjang (8 bait). Jika 'x' aktif, iaitu pendek (2 bait), mengaksesnya akan menyebabkan penuding tindanan mengalihkan 8 bait (saiz panjang panjang) dari lokasi memori kesatuan.

Atas ialah kandungan terperinci Sejauh manakah Kesatuan C/C, dan Mengapa?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan