strlen() vs. sizeof() dalam C: Memahami Perbedaan dan Penggunaan yang Benar
Apa Itu strlen()
Dalam C, strlen() mengembalikan jumlah karakter dalam string yang diakhiri null, tidak termasuk penutup '\0'. Ini menghitung karakter alfabet, angka, simbol, dan spasi.
Artikel ini menjelaskan peran strlen(), sizeof(), dan mengapa mereka berperilaku berbeda.
Definisi strlen()
Definisi sizeof()
Contoh sintaks
Perbedaan utama
Apa Itu sizeof()
Operator sizeof menghasilkan ukuran, dalam byte, dari operandnya. Ini dievaluasi pada waktu kompilasi untuk tipe statis dan pada waktu runtime untuk array panjang variabel. Ini berlaku untuk semua tipe data C, termasuk primitif, pointer, struct, dan union. Hasilnya bertipe size_t, tipe integer tanpa tanda yang dijamin cukup besar untuk menampung ukuran objek terbesar.
Karena ukuran tipe seperti int atau double dapat bervariasi antara sistem 32-bit dan 64-bit, sizeof memastikan portabilitas.
Perbedaan Utama
strlen() mengukur jumlah karakter dalam string; sizeof() mengukur memori yang ditempati oleh variabel atau tipe.
Hanya strlen() yang mempertimbangkan penutup '\0' string; sizeof() mengabaikan konten.
Tipe kembali dari strlen() adalah size_t (umumnya integer tanpa tanda 64-bit pada sistem modern); sizeof() juga mengembalikan size_t.
strlen() adalah fungsi runtime yang didefinisikan dalam string.h; sizeof adalah operator unary waktu kompilasi.
Hanya strlen() yang beroperasi pada array karakter; sizeof bekerja dengan setiap tipe.
Sintaks strlen()
size_t length = strlen(my_string);
Di sini, my_string adalah array karakter atau pointer ke string yang diakhiri null.
Contoh strlen()
#include <stdio.h> #include <string.h> int main() { char strng[] = "January"; printf("Panjang string yang diberikan adalah: %zu\n", strlen(strng)); return 0; }
Output:
Panjang string yang diberikan adalah: 7
Sintaks sizeof()
1) sizeof(type)
sizeof(type) menghasilkan ukuran dari tipe yang ditentukan.
Evaluasi ukuran tipe ekspresi tanpa menghitung nilainya.
#include <stdio.h> int main() { char p = 'S'; double q = 4.65; printf("Ukuran variabel p : %zu\n", sizeof(p)); printf("Ukuran ekspresi : %zu\n", sizeof(p+q)); int a = (int)(p+q); printf("Ukuran ekspresi yang dikonversi secara eksplisit : %zu\n", sizeof(a)); return 0; }
Output:
Ukuran variabel p : 1 Ukuran ekspresi : 8 Ukuran ekspresi yang dikonversi secara eksplisit : 4
Perbandingan Visual
Berikut adalah ringkasan berdampingan dari kedua konstruksi.
Fitur
strlen()
sizeof()
File header
string.h
Tidak diperlukan header (operator bawaan)
Tujuan
Menghitung panjang string (tidak termasuk null)
Menentukan ukuran memori dari tipe atau variabel
Tipe kembali
size_t
size_t
Waktu evaluasi
Runtime (mungkin melintasi string)
Waktu kompilasi (kecuali untuk VLA)
Dapat diterapkan pada
Hanya array karakter atau pointer ke string yang diakhiri null
Semua tipe data dan ekspresi
Kapan Menggunakan Mana
Gunakan strlen() ketika Anda membutuhkan panjang logis string, seperti untuk alokasi buffer, ekstraksi substring, atau validasi input.
Gunakan sizeof() ketika Anda membutuhkan ukuran fisik dari tipe data atau variabel, misalnya saat menyalin memori dengan memcpy atau mengalokasikan blok memori untuk array struct.
Ingat bahwa sizeof(char) selalu 1 byte, yang merupakan satuan memori dasar dalam C.
Untuk literal string, sizeof("hello") menghasilkan 6 (lima karakter plus penutup null), sementara strlen("hello") menghasilkan 5.
Menurut pedoman ini memastikan kode C yang efisien, portabel, dan mudah dipelihara.