Adakah Penunjuk Sentiasa Mempunyai Saiz Yang Sama dalam C ?

Mary-Kate Olsen
Lepaskan: 2024-10-28 22:42:02
asal
589 orang telah melayarinya

 Do Pointers Always Have the Same Size in C  ?

Adakah Semua Penunjuk Mempunyai Saiz Yang Sama dalam C ?

Soalan ini telah menjadi subjek perdebatan, dengan beberapa sumber mendakwa bahawa semua petunjuk mempunyai saiz yang sama manakala yang lain berpendapat bahawa penunjuk boleh berbeza-beza dari segi saiz.

Mengikut piawaian C, secara jelas dijamin bahawa:

  • void mempunyai saiz yang sama seperti char
  • petunjuk berkelayakan cv (cth., T const, T volatile, T const volatile) mempunyai saiz yang sama dengan T
  • Penunjuk kepada jenis enum dengan jenis asas yang sama mempunyai saiz yang sama

Walaupun piawaian tidak menyatakan dengan jelas bahawa semua penunjuk mempunyai saiz yang sama, secara amnya adalah benar bahawa penunjuk kepada semua jenis kelas , penunjuk fungsi, penunjuk ahli data dan penunjuk ahli fungsi mempunyai saiz yang sama.

Walau bagaimanapun, andaian ini tidak dijamin 100%, kerana pengkompil secara teknikal dibenarkan bermain helah. Contohnya, mereka boleh mencipta penunjuk yang lebih panjang untuk kelas yang bermula dengan awalan tertentu atau jika mereka memutuskan untuk melaksanakan kutipan sampah untuk kelas tersebut.

Dalam senario praktikal, kemungkinan besar penyusun akan menggunakan kebebasan ini. Akibatnya, pembangun secara amnya boleh menganggap bahawa penunjuk kepada jenis kelas yang berbeza dan jenis lain yang dinyatakan di atas akan mempunyai saiz yang sama. Untuk memberikan jaminan lanjut, pernyataan static_assert boleh dilaksanakan untuk menandakan kemungkinan pelanggaran.

Walau bagaimanapun, dalam seni bina bersegmen dengan penunjuk dekat dan jauh, ada kemungkinan jenis penunjuk ini mungkin tidak mempunyai saiz yang sama. Ini berfungsi sebagai pengecualian kepada peraturan biasa penunjuk yang mempunyai saiz seragam.

Atas ialah kandungan terperinci Adakah Penunjuk Sentiasa Mempunyai Saiz Yang Sama dalam 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!