Rumah >pembangunan bahagian belakang >C++ >Mengapakah `sizeof` Mengembalikan Nilai Berbeza untuk String Literals, Pointers dan Arrays dalam C ?
Sizeof String Literal
Dalam C , sizeof mengira saiz jenis data atau ungkapan. Apabila digunakan pada literal rentetan, sizeof mengira panjang literal, termasuk aksara null yang ditamatkan (' ').
Memahami Output
Kod yang disediakan mengira saiz rentetan literal, const char* const dan const char[]. Output pada OS 32-bit yang disusun dengan GCC ialah:
sizeof(string literal) = 2 sizeof(const char* const) = 4 sizeof(const char[]) = 2
Mengapa sizeof Mengira Panjang String Literal
sizeof("f") menilai kepada 2 kerana rentetan literal terdiri daripada aksara 'f' dan nol penamat aksara.
Jenis dalam saiz Ungkapan
Kaveat: Tatasusunan dalam saiz
Perhatikan bahawa tatasusunan tidak mereput kepada penunjuk apabila dihantar ke sizeof. Oleh itu, sizeof(bar) mengembalikan 2 dengan betul dan bukannya saiz penuding (4 pada OS 32-bit).
Atas ialah kandungan terperinci Mengapakah `sizeof` Mengembalikan Nilai Berbeza untuk String Literals, Pointers dan Arrays dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!