Aracılığıyla paylaş


sizeof İşleci (C)

sizeof işleci, işlenen türünde bir nesneyi depolamak için gereken depolama miktarını bayt cinsinden verir. Bu işleç, programlarınızda makineye bağımlı veri boyutlarını belirtmekten kaçınmanıza olanak tanır.

Sözdizimi

sizeof unary-expression
sizeof ( type-name )

Açıklamalar

İşlenen, birli ifade olan bir tanımlayıcı veya tür atama ifadesidir (parantez içine alınmış bir tür tanımlayıcısı). Birli ifade bir bit alanı nesnesini, tamamlanmamış bir türü veya işlev belirleyicisini temsil edemez. Sonuç, işaretsiz bir tamsayı sabitidir. Standart üst bilgi STDDEF. H bu türü size_t olarak tanımlar.

sizeof işlecini bir dizi tanımlayıcısına uyguladığınızda, sonuç dizi tanımlayıcısı tarafından temsil edilen işaretçinin boyutu değil, tüm dizinin boyutudur.

sizeof işlecini bir yapıya, birleşim türü adına veya bir yapı ya da birleşim türünün tanımlayıcısına uyguladığınızda; sonuç, iç ve sondaki doldurma dahil olmak üzere, yapı veya birleşimdeki bayt sayısıdır. Bu boyut, yapı veya bellek sınırları üzerindeki birleşim üyelerini hizalamak için kullanılan iç ve sondaki doldurmayı içerebilir. Bu şekilde, sonuç tek tek üyelerin depolama gereksinimlerini toplayarak hesaplanan boyuta karşılık gelmeyebilir.

Boyutsuz bir dizi bir yapının son öğesi ise, sizeof işleci dizi olmadan yapının boyutunu döndürür.

buffer = calloc(100, sizeof (int) );

Bu örnekte, bir sizeof öğesinin makineler arasında değişen boyutunu, int adlı bir çalışma zamanı işlevine yönelik bağımsız değişken olarak geçirmek için calloc işleci kullanılmaktadır. İşlev tarafından döndürülen değer buffer içinde depolanır.

static char *strings[] = {
      "this is string one",
      "this is string two",
      "this is string three",
   };
const int string_no = ( sizeof strings ) / ( sizeof strings[0] );

Bu örnekte strings, bir char işaretçileri dizisidir. İşaretçilerin sayısı dizideki öğelerin sayısıdır, ancak belirtilmemiştir. Dizideki öğelerin sayısını hesaplamak üzere sizeof işlecini kullanarak işaretçilerin sayısını belirlemek kolaydır. Tamsayı const değeri string_no bu sayıya başlatılır. Bu bir const değer olduğundan değiştirilemez string_no .

Ayrıca bkz.

C İşleçleri
C++ Yerleşik İşleçler, Öncelik ve İlişkisellik