sizeof() Operatörü Nedir ve Kullanımı

sizeof operatörünün sonucu size_t yani işaretsiz tamsayı türündendir. Malloc ve memcpy fonksiyonlarıda size_t cinsinden argüman almaktadır.

size_t, bir nesnenin boyutunu tutan herhangi bir değişken ya da argüman bildiriminde önerilen yoldur.

sizeof operatörü bir string’in uzunluğu ölçmez, string’in bellekte ne kadar yer kapladığını öğrenmemizi sağlamaktadır. Strlen fonksiyonu ise string’deki ilk null karakterine ‘\0’ kadar toplam karakter sayısını sayar. Bu da sizeof’u strlen fonksiyonundan ayıran kısımdır. Kesinlikle bununla karıştırmamız gerekmektedir.

sizeof operatörü bir değişkenin bellekte kapladığı öğrenmemizi sağlamaktadır.

——Çıktı—–
sizeof x: 4                                                                                                                                                                        
sizeof x: 10                                                                                                                                                                       
sizeof x: 8                                                                                                                                                                        
sizeof x: 4  

 

Buna bir kaynak kodu ile örnek verelim.

——Çıktı—–

lenght of string:6

size of string:10

sizeof(x++) işleminde x değişkeninin değeri artmaz çünkü sizeof, compile etme işlemi sırasında çalışır run time zamanında çalışmaz.

——Çıktı—–

sizeof x: 4

value of x: 5

İçeriği boş olan bir olan bir struct’ın sizeof operatörü ile bellekte ne kadar yer kaplandığını baktığımızda 0 olduğunu göreceğiz.

——Çıktı—–

size of struct:0

 

 

Bu yazı hakkında ne düşünüyorsun ?
  • Gereksiz 
  • Normal 
  • Faydalı 
  • Müthiş 
Sidar ATABEY

About Sidar ATABEY

Elektrik-Elektronik Mühendisi. Makine Mühendisliğinde yan dal programını tamamladı. 1 sene boyunca Erasmus Programı kapsamında Polonya Silesian University of Technology'de eğitim gördü.

View all posts by Sidar ATABEY →

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir