Merhaba, tekrar hoş geldiniz.
Bu derste biraz void işaretçilerden bahsetmek istiyorum.
Void'in ne olduğunu biliyoruz çünkü fonksiyonlardan
bahsederken bu anahtar sözcüğü kullandık.
Temel olarak, bir fonksiyondan herhangi bir veri döndürmek istemiyorsak, fonksiyon
imzasının bir parçası olarak void kullanırız. Peki ya avoid pointer kullandığımızda, bu ne anlama geliyor?
Void tür adı herhangi bir türün yokluğu anlamına gelir.
Yani void star tipindeki bir işaretçi herhangi bir tipteki bir veri öğesinin adresini içerebilir, bu nedenle
çok fazla esnekliğe sahiptir.
İşaretçi olarak ne saklayacağınızı bilmiyorsanız, void star diyebilirsiniz,
oldukça şık. Genellikle fonksiyonlarda fonksiyon parametreleri için kullanılır.
Bu nedenle void yıldızı genellikle parametre türü olarak veya verilerle
türden bağımsız bir şekilde
ilgilenen işlevlerde dönüş türü olarak kullanılır.
Böylece, void yıldız işaretçileri alırsa fonksiyonunuzun
daha esnek olmasına izin verebilirsiniz.
Temel olarak, işlevinizin birden fazla değişken
türü alabileceği anlamına gelir, ancak tamamen esnek
değildir, çünkü referansını kaldırdığınızda bir şekilde döküm yapmanız gerekir.
Yani her tür işaretçi void türünde, herhangi bir türde bir değer olarak aktarılabilir.
Void işaretçisi ne tür bir nesneye işaret ettiğini bilmez.
Dolayısıyla, doğrudan referansını kaldıramazsınız
ve void star ile birlikte gerçek hıçkırık da burada ortaya çıkar.
Farklı veri türleri için uzun esneklik için harikadır, ancak yalnızca veri
türünü biliyorsanız kullanabilirsiniz.
Bu nedenle, işaretçinin referansını kaldırdığınızda
işaretçiye açık bir döküm sağlamanız gerekir.
int türündeki bir değişkenin adresi void türündeki bir işaretçi değişkende saklanabilir,
çünkü void yıldız, içinde herhangi bir veri türünün saklanabileceği anlamına gelir.
Bu nedenle, void yıldız işaretçisinde saklanan adresteki
aralık değerine erişmek istediğinizde, önce bunu int türünde bir işaretçiye
dönüştürmeniz gerekir.
Bu örnekte void yıldız işaretçisini nasıl kullanacağımızı göreceğiz.
Tanımladığımız üç değişkenimiz var, bir tamsayı ve bir float ve bir karakter.
Şimdi boş bir yıldız işaretçisi oluşturacağız.
Gösterici void tipinde olduğu için, ona bir int olan i'nin
adresini atayabiliriz. Ona bir float olan f'nin adresini
atayabiliriz ve ona bir karakter olan karakter veya ch'nin
adresini atayabiliriz.
Tek sorun, dereferans yaptığınızda, bu türü bilmek zorunda olmanızdır, ancak yine de burada avantajı görürsünüz.
Buradaki avantaj, yalnızca bir değişken türü oluşturmak zorunda olmamız
ve içinde birden fazla farklı adres saklayabilmemizdir.
Ancak ne zaman kullanmak isterseniz, bunu star'da kullanmanız gerekir.
Ve burada verileri yazdırırken göreceksiniz, in yıldızı işaretçiyi atıyor
ve sonra onu de-referencing yapıyoruz, int parantezlerinin dışındaki yıldız dereferencing
yapıyor. Bu, v işaretçisinin işaret
ettiği değeri yazdıracak, ancak
önce onu doğru türe dökecek.
Dolayısıyla, bu v işaretçilerinin üçünde de karınca için 10 yazdıracaktır.
Şamandıra için 2 tane getirecek. 34.
Ve ch, char için k yazdıracak.
Dediğim gibi, void işaretçisinin işlev parametrelerinde ve dönüş
türlerinde daha fazla kullanıldığını göreceğiz.
Ve bu gerçekten de tek bir bildirimde sadece bir void yıldız
işaretçisi kullanmanın ve birçok farklı
veri türü atamanın değeridir. Teşekkür ederim.