Minggu, Mei 03, 2020

Perbedaan antara strlen() dan sizeof() untuk string pada bahasa C

sizeof()
Operator sizeof adalah compile time unary operator yang dapat digunakan untuk menghitung ukuran dari nilai operannya.

satu, Hasil dari sizeof adalah tipe unsigned integral yang biasanya dinotasikan oleh size_t.
dua, sizeof dapat diterapkan untuk tipe data apapun, termasuk tipe data primitif seperti integer dan float, atapun tipe data compound seperti struktur, union, dan lain sebagainya.

strlen()
strlen() adalan fungsi predefinisi pada bahasa C yang definisinya mengandung file header "string.h".

satu, strlen() menerima pointer menuju array sebagai argumen dan melewati memori ketika runtime dari alamat yang diberikan untuk karakter NULL dan menghitung berapa banyak lokasi memori yang dilewatinya sebelum karakter yang dicari ditemukan.
dua, Tugas utama dari strlen() adalah menghitung panjang dari array atau string.

sizeof vs strlen()
satu, Tipe: operator sizeof adalah operator unary dimana strlen() adalah fungsi predefinisi pada bahasa C.

dua, Mendukung tipe data: sizeof memberikan nilai nyata dari tipe data apapun dalam satuan byte tempat dimana nilai ukuran dari array string.

tiga, Evaluasi ukuran: sizeof() adalah ekspresi kombinasi yang memberikan ukuran dari sebuah tipe data atau sebuah variabel. Tidak peduli hal tersebut apakah tentang nilai dari sebuah variabel itu sendiri. Sementara strlen, memberikan ukuran panjang dari C-style NULL string.

empat, Hasil: Keduanya merupakan konsep yang berbeda dan digunakan untuk tujuan yang berbeda pula.

lima, Dalam kontek bahasa C++: Keduanya tidaklah diperlukan. strlen() dalam string style-C dapat digantikan penggunaannya pada C++ dengan std::strings. sizeof() pada bahasa C adalah argumen menuju fungsi seperti halnya malloc(), memcpy(), atau memset() yang dapat digantikan penggunaannya pada bahasa C++ dengan use new, std::copy(), dan std::fill(), ataupun dengan menggunakan konstruktur.

Output:
Length of String is 8
Size of String is 9

Karena dalam bahasa C nilai ukuran char adalah 1 byte maka ditemukan pula bahwa strlen() akan memberikan nilai yang lebih kecil daripada sizeof().

Penjelasan: Diketahui bahwa, setiap string yang diakhiri dengan karakter NULL ("\0"). 

strlen() selanjutnya akan mencari nilai NULL tersebut dan menghitung angka dari memory alamat yang dilewatinya, sehingga akan menghitung nilai sebenarnya dari angka yang ditampilkan pada elemen dalam string sebelum berakhir pada nilai NULL. Dengan nilai ukuran adalah 8.

sizeof(): operator sizeof() akan mengembalikan jumlah nyata dari alokasi memori untuk operand yang telah dilewatinya. Dimana nilai operand array dari karakter mengandung 9 karakter termasuk karakter NULL itu sendiri dan ukuran dari 1 karakter adalah 1 byte. Sehingga, total dari ukurannya adalah 9 byte.

Perkirakan hasil output dari contoh program berikut ini.


Fungsi strlen mencari karakter NULL dan berperilaku tidak normal jika tidak menemukan karakter NULL tersebut.

Output:
sizeof(a) = 10
strlen(a) = 9
sizeof(b) = 9
strlen(b) = 11





Related Posts

Perbedaan antara strlen() dan sizeof() untuk string pada bahasa C
Oleh

mohon untuk melakukan koreksi jika terdapat kesalahan pada penulisan blog ini,