Rumah >pembangunan bahagian belakang >C++ >Mengapakah `sizeof` Menghasilkan Keputusan Berbeza untuk Huruf Rentetan, Penunjuk dan Tatasusunan Aksara?
Saiz Huruf Rentetan
Kod yang diberikan menunjukkan penggunaan operator saiz pada pelbagai jenis pemalar rentetan. Output mendedahkan bahawa saiz rentetan literal, sizeof("f"), berbeza daripada saiz penunjuk kepada rentetan literal (sizeof(foo)), serta saiz tatasusunan aksara (sizeof(bar )).
Mengapa sizeof mengira panjang rentetan literal?
Saiz operator mengira saiz operannya dalam bait. Untuk literal rentetan, operan ialah perwakilan tatasusunan aksara yang sepadan, termasuk aksara null (' ') penamat. Ini menerangkan output 2 untuk sizeof("f"), kerana ia mengambil kira aksara 'f' dan ' '.
Adakah rentetan literal mempunyai jenis yang berbeza apabila diberikan kepada sizeof?
Tidak. Literal rentetan mempunyai jenis const char[N], dengan N ialah panjang rentetan, termasuk aksara nol penamat. Walau bagaimanapun, apabila menghantar rentetan literal kepada operator saiz, ia menganggap rentetan sebagai ungkapan jenis const char*, iaitu jenis penunjuk kepada aksara. Ini menerangkan output 4 untuk sizeof(foo), kerana ia adalah saiz penuding pada mesin 32-bit.
Mata Tambahan:
Atas ialah kandungan terperinci Mengapakah `sizeof` Menghasilkan Keputusan Berbeza untuk Huruf Rentetan, Penunjuk dan Tatasusunan Aksara?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!