C Programlama #35 | Başvuru ile Kabarcık Sıralaması ve sizeof

İşaretçiler (Pointers)

Eğitmen: Dr. Süleyman Burak ÇELİK

26. dersteki kabarcık sıralamasını işaretçilerle yeniden yazıyoruz: yer değiştirme işini 33. dersteki takas fonksiyonuna, elemanların adresleriyle veriyoruz. Ardından sizeof işlecine yakından bakıyoruz. Altı boy (172, 165, 180, 158, 176, 169) kabarcık sıralamasıyla sıralanıyor; her karşılaştırmada yan yana iki elemanın adresi takas fonksiyonuna gidiyor: takas(&d[j], &d[j + 1]). Neden &? 25. dersteki gibi tek bir eleman fonksiyona değerle, kopyalanarak gider. lldb ile takas'ın ilk çağrısında duruyoruz: *x 172, *y 165; bir çerçeve yukarıda kabarcik'ta tur 1, j 0 ve &d[j], x'in değeriyle aynı adres. lldb'nin durmadan sayan kesme noktası takas'ın 8 kez çağrıldığını söylüyor: 26. derste bu altı boy için saydığımız 8 yer değiştirmeyle aynı. takas'ın prototipi kabarcik'in içinde olduğundan main takas'ı çağıramıyor (gcc: implicit declaration of function 'takas'). Eleman sayısını parametreyle veriyoruz ve sizeof ile hesaplıyoruz: sizeof boy 24, sizeof boy[0] 4, 24 / 4 = 6; sayıyı fonksiyona gömmenin ve global değişkene koymanın neden kötü olduğunu konuşuyoruz. sizeof bir işleçtir ve değeri derlemede hesaplanır: sizeof(i++) çalıştırınca s 4, i hâlâ 5 (clang uyarıyor). Tür boyutları makineden makineye değişir: bu Mac'te (arm64) long double 8 bayt, Linux sunucusunda (x86_64, gcc 11.4) 16 bayt. Eleman sayısı yalnızca dizinin kendi adıyla bulunur: sizeof sicaklik 240, bir eleman 8, 240 / 8 = 30; fonksiyona geçen dizi ise bir işaretçidir. Ekrandaki her çıktı, kodun gerçekten derlenip çalıştırılmasından geliyor. Bu derste: 1. Kabarcık sıralaması takas(&d[j], &d[j + 1]) ile: neden &? 2. lldb ile takas'ın ilk çağrısı ve çağrı sayısı (8) 3. Prototipi fonksiyonun içine koymak: en az yetki 4. Eleman sayısı: sizeof dizi / sizeof dizi[0]; sizeof bir işleç (sizeof(i++)) 5. Tür boyutları: bu Mac ile Linux sunucusu karşılaştırması Bölümler: 0:00 Başvuru ile kabarcık sıralaması 0:15 Yer değiştirmeyi takas'a vermek 0:56 Neden &? Elemanın adresi 1:37 takas kaç kez çağrıldı? 1:56 Prototip fonksiyonun içinde 2:23 Eleman sayısı: parametre ve sizeof 2:57 sizeof bir işleç 3:40 Tür boyutları makineden makineye 4:14 Yalnızca dizinin kendi adıyla 4:43 Bugünün dört kuralı 5:09 Sonraki ders: işaretçi aritmetiği Kaynak kitap: Paul Deitel, Harvey Deitel — C How to Program, 9. baskı (2022), §7.6–7.7. Konu sırası ve kavramlar kaynak kitaptan izlenir; anlatım, örnekler ve ekranlar özgündür. Hedef kitle: C'ye yeni başlayan tüm mühendislik ve bilgisayar/yazılım öğrencileri. Ön koşul: C Programlama #01–#34.

Bu videoyu izlemek için Premium üyelik gerekir.