Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Adakah semua penunjuk dalam C mempunyai saiz yang sama? Menyelam mendalam ke dalam kerumitan dan nuansa saiz penunjuk dalam C .

Adakah semua penunjuk dalam C mempunyai saiz yang sama? Menyelam mendalam ke dalam kerumitan dan nuansa saiz penunjuk dalam C .

Linda Hamilton
Linda Hamiltonasal
2024-10-26 09:36:03935semak imbas

Do all pointers in C   have the same size? A deep dive into the complexities and nuances of pointer size in C  .

Adakah Semua Penunjuk dalam C Mempunyai Saiz Yang Sama?

Persoalan sama ada semua penunjuk dalam C mempunyai saiz yang sama telah tertakluk kepada perbahasan. Walaupun sesetengah sumber mendakwa bahawa penunjuk sentiasa mempunyai saiz yang sama, yang lain mencadangkan bahawa jenis penunjuk yang berbeza boleh mempunyai saiz yang berbeza.

Saiz Dijamin dalam Standard C

Standard C dengan jelas menjamin bahawa:

  • kosong mempunyai saiz yang sama seperti char.
  • T const, T meruap dan T const meruap mempunyai saiz yang sama dengan T.
  • Penuding kepada jenis enum dengan jenis asas yang sama mempunyai saiz yang sama.

Pertimbangan Saiz Praktikal

Dalam amalan, penunjuk kepada semua jenis kelas dan jenis fungsi biasanya mempunyai saiz yang sama. Ini kerana:

  • Penyusun mesti menentukan saiz penuding kepada jenis kelas yang tidak lengkap tanpa mengetahui pelaksanaannya.
  • reinterpret_cast boleh digunakan untuk menukar antara jenis penuding fungsi yang berbeza tanpa kehilangan maklumat.

Pengecualian: Seni Bina Bersegmen

Pada seni bina bersegmen, penunjuk dekat dan jauh mungkin mempunyai saiz yang berbeza.

Sebab untuk Membenarkan Saiz Tidak Seragam?

Standard C secara teknikal membenarkan jenis penunjuk mempunyai saiz yang berbeza untuk kes patologi. Walau bagaimanapun, dalam aplikasi praktikal, kes sedemikian jarang berlaku dan tidak mempunyai faedah yang ketara.

Kesimpulan

Walaupun tergoda untuk menganggap bahawa semua penunjuk dalam C mempunyai saiz yang sama, ia tidak dijamin oleh standard. Walau bagaimanapun, dalam kebanyakan senario praktikal, semua penunjuk akan mempunyai saiz yang sama, seperti yang digariskan dalam perbincangan di atas.

Atas ialah kandungan terperinci Adakah semua penunjuk dalam C mempunyai saiz yang sama? Menyelam mendalam ke dalam kerumitan dan nuansa saiz penunjuk dalam 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