Dizi boyutu
- C kursu
- Başlangıç
- Ders 55/116
- 3 dk
sizeof ile dizi boyutunu hesaplamayı öğrenirsin.
sizeof ile dizi boyutu
C'de dizinin uzunluğunu doğrudan veren bir operatör yoktur. Ama sizeof ile hem dizinin toplam baytını hem de bir elemanın baytını öğrenebilirsin; bölümüm uzunluğu verir.
int scores[5] = {85, 92, 78, 90, 88};
int size = sizeof(scores) / sizeof(scores[0]);
printf("%d\n", size); // 5Burada sizeof(scores) 20 bayttır (5 × 4), sizeof(scores[0]) 4 bayttır. Bölüm 5 verir. Bu deyim döngü sınırı için kullanışlıdır.
Döngü sınırı olarak sizeof
sizeof deyimini döngü sınırı olarak kullanmak dizinin boyutunu sabit kodlamaktan daha güvenlidir. Boyutu sonradan değiştirirsen döngü otomatik uyum sağlar.
int scores[5] = {85, 92, 78, 90, 88};
int n = sizeof(scores) / sizeof(scores[0]);
for (int i = 0; i < n; i++) {
printf("%d\n", scores[i]);
}Bu yazım tarzı kod bakımını kolaylaştırır. Diziyi 10 elemana çıkarsan döngü de 10'a döner. Elle 5 yazsaydın güncellemeyi unutabilirdin.
Uygulama Dizi uzunluğunu yazdır
Bir C programı yaz. int scores[5] = {85, 92, 78, 90, 88}; tanımla. int n = sizeof(scores) / sizeof(scores[0]); ile uzunluğu hesapla. printf("%d\n", n); ile yazdır. #include <stdio.h> başta olsun.
Başlangıç kodu
#include <stdio.h>
int main(void) {
// scores tanımla, sizeof ile uzunluğu hesapla ve yazdır
return 0;
}Örnek çözüm
#include <stdio.h>
int main(void) {
int scores[5] = {85, 92, 78, 90, 88};
int n = sizeof(scores) / sizeof(scores[0]);
printf("%d\n", n);
return 0;
}Beklenen çıktı
5
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 sizeof parçalarını eşleştir
| Kavram | Anlamı |
|---|---|
sizeof(scores) |
Toplam bayt |
sizeof(scores[0]) |
Tek eleman bayt |
sizeof(int) |
Türün baytı |
/ sizeof |
Bölüm |
2 int scores[5] için sizeof(scores) kaç bayt?
int scores[5];
sizeof(scores);- 4
- 5
- 10
- 20 Doğru cevap
Açıklama: 5 int × 4 bayt = 20.
3 Uzunluk deyimini tamamla
int n = sizeof(scores) / sizeof(____);
int n = sizeof(scores) / sizeof(scores[0]);
Açıklama: scores[0] tek eleman baytını verir.