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.

#include <stdio.h>

int main() {
    int x = 5;
    char y[10];
    long z=5;
    float t=3.14;
    
    printf("sizeof x: %zd\r\n", sizeof(x));
    printf("sizeof x: %zd\r\n", sizeof(y));
    printf("sizeof x: %zd\r\n", sizeof(z));
    printf("sizeof x: %zd\r\n", sizeof(t));
   
    return 0;
}
——Çıktı—–
sizeof x: 4                                                                                                                                                                        
sizeof x: 10                                                                                                                                                                       
sizeof x: 8                                                                                                                                                                        
sizeof x: 4  

 

Buna bir kaynak kodu ile örnek verelim.

#include <stdio.h>
#include <string.h>

int main()
{
    char test_string[10]={'1','2','3','4','5','6','\0'};
    int len_string=0;
    size_t size_string=0;
    
    len_string=strlen(test_string);
    size_string=sizeof(test_string);
    
    printf("lenght of string:%d\r\n",len_string);
    printf("size of string:%zd\r\n",size_string);
    
    return 0;
}

——Çı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.

#include <stdio.h>

int main() {
    int x = 5;
    printf("sizeof x: %zd\r\n", sizeof(x++));
    printf("value of x: %d\r\n", x); 
    return 0;
}

——Çı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.

#include <stdio.h>


struct test_struct{
    
}struct_t;

int main()
{
    size_t size_struct=0;
    
    size_struct=sizeof(struct_t);
    
    printf("size of string:%zd\r\n",size_struct);
    
    return 0;
}

——Çıktı—–

size of struct:0

 

 

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

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 →