Rumah >pembangunan bahagian belakang >C++ >Adakah `sizeof(void)` memberitahu kami saiz jenis void dalam C atau C ?

Adakah `sizeof(void)` memberitahu kami saiz jenis void dalam C atau C ?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-03 20:05:27982semak imbas

Does `sizeof(void)` tell us the size of the void type in C or C  ?

Saiz Lompang Sukar

Soalan:

Bolehkah kita menentukan saiz jenis lompang dalam C atau C ? Pertimbangkan kod berikut:

void *p = malloc(sizeof(void));
Sambungan: Jika sizeof(void) mengembalikan 1 dalam GCC, adakah penunjuk p akan meningkat kepada 0x2346 selepas p jika p mulanya dipegang 0x2345?

Jawapan:

Jenis void pada asasnya tidak mempunyai saiz, menjadikan ungkapan sizeof(void) tidak bermakna dan membawa kepada ralat kompilasi. Dalam C , ia adalah dilarang sama sekali.

Penemuan Tidak Dijangka:

Anehnya, apabila menyusun dalam GNU C, sizeof(void) menghasilkan 1. Walau bagaimanapun, tingkah laku ini terhad kepada GNU C dan tidak diperhatikan dalam C atau lain-lain pelaksanaan.

Implikasi:

Walaupun nilai pulangan yang tidak dijangka dalam GNU C, adalah penting untuk ambil perhatian bahawa void kekal sebagai jenis tanpa saiz. Penunjuk kepada batal, seperti p dalam contoh, adalah penunjuk tulen dan boleh ditambah seperti penuding lain. Operasi kenaikan dalam soalan sambungan akan berfungsi seperti yang diharapkan, dengan p menunjuk ke alamat memori yang tersedia seterusnya.

Atas ialah kandungan terperinci Adakah `sizeof(void)` memberitahu kami saiz jenis void dalam C atau C ?. 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