Merhaba ve tekrar hoş geldiniz. Bu derste, işaretçi sözdizimi, işaretçi kavramı,
bir işaretçiye adres atama ve ardından bir işaretçi için bazı çıktıları
görüntüleme konularına aşina olmanızı sağlayan
bir önceki görevimizin bir gösterimini veya çözümünü sunmak istiyorum.
Şimdi kod bloklarını açalım ve yeni bir proje oluşturacağız, yeni bir c projesi, sadece
işaretçi temelleri olarak adlandırılacak, çünkü işaretçilerin temellerini yapacak.
Yani tüm bunları nasıl yapacağımızı biliyoruz. Konsol uygulamasını seçeceğiz, c'ye
sahip olduğumuzdan emin olacağız ve sadece bu işaretçi temellerini
çağıracağız.
Bu işaretçi kavramı gerçekten çok önemlidir.
Yani yavaştan başlayıp oradan devam edeceğiz.
İşte başlıyoruz. İşte ana merkezimiz.
Şimdi tek yapmak istediğimiz bir tamsayı değişkeni ve ardından
bir işaretçi değişkeni oluşturmak.
Ve her ikisini de başlatmak istiyoruz.
Bu yüzden yapacağım ilk şey bir tamsayı değişkeni oluşturmak
olacak ve buna number ya da num adını vereceğim.
Ve bunu 150 olarak başlatacağım.
Bir işaretçi değişkeni oluşturmak için aynı tipte olması gerekir.
Bir işaretçi oluşturmak için tek yapmanız gereken veri türünü ve ardından bildirimdeki yıldız
işaretini yapmaktır ve ardından işaretçi numarası için buna pnum diyeceğiz.
Genellikle, işaretçi olan değişkenlerinizi p önekiyle başlatmak istersiniz.
Ve işaretçilerinizi oluştururken her zaman onları null olarak başlatmak iyi bir fikirdir.
Null, işaretçinin hiçbir şeyi işaret etmediğini söyleyen
özel bir anahtar sözcüktür.
Her iki değişkenimiz, num tamsayımız
ve num tamsayı işaretçimiz ilklendirildikten sonra, işaretçimize
bir şey atamak istiyoruz.
Çünkü şu anda işaretçimiz bellekte hiçbir şeyi göstermiyor.
Ve işaretçinizi neye atarsanız atayın, bunun için gerçekten
bellek konumu olduğundan, bellek ayrıldığından emin
olmak istersiniz.
Yani bu durumda, eğer num atayacaksak, num 6. satırda
kendisi için bellek ayrılmış bir tamsayıdır.
C, herhangi bir değişken bildirimi için otomatik
olarak bellek ayırır.
Satır 7'deki bu işaretçi bile sadece işaretçiyi saklamak için ayrılmış belleğe sahiptir.
Bu, işaret ettiği şey için bellek ayrıldığı anlamına gelmez.
Yani bir adres değeri olan pnum'ı işaretlemek
için tek yapmamız gereken pnum eşittir ampersand demek,
ki bu da operatörün adresidir ve
biz bunu num'un adresine atamak
istiyoruz.
Num için zaten ayrılmış bir bellek var ve biz bunu bildirdik.
Yani 9. satır sadece num'un adresini bir işaretçiye atıyor.
Bu kadar basit.
Şimdi bir işaretçi oluşturduğunuzda ve ona bir adres atadığınızda, kendi
dinamik belleğinizi de oluşturabilir ve bunu atayabilirsiniz.
Ama bu başka bir egzersiz için. Bu
durumda, değişkenimiz zaten oluşturulmuştur. Bu değişkenin değerine işaret edeceğiz.
Num'un adresini atamamız gerekiyor.
Şimdi çıktıları aldıktan sonra ödevlerimizi yaptık ve her şeyi başlattık.
Şimdi sadece bazı bilgileri yazdırmak istiyoruz.
Bu yüzden printf'i kullanacağız ve ilk olarak pnum adresinin değerini
yazdırmak istediğimi söyleyeceğim.
Şimdi adres için pnum değeri nedir,
ama pnum adresi. Ve burada aslında bir işaretçinin
adresini söyleyebiliriz,
bu yüzden p diyeceğiz. Ve sonra tek yapmamız gereken buraya
işaretçimizin adresini yazmak.
Yani burada pnum'ın adresi diyebiliriz.
Peki bu bize ne verecek, bu bize belleği tahsis eden işaretçinin
adresini verecek. İşaretçinin değerinin
değeri değildir. İşaretçinin değeri de bir adres olacaktır, num'un adresi olacaktır.
O halde önce num'un çıktısını alalım. Bu yüzden burada
sadece num adresini yazdıracağız.
Ve yine, yüzde p gibi bir adres yazdırmak istiyoruz.
Ve sonra num adresinin adresini
söyleyeceğiz.
Ve num'un adresi de pnum'ın değeriyle eşleşmelidir.
pnum adresi farklı olacaktır çünkü bu bellekteki işaretçidir.
Bu yüzden pnum değerini ya da pnum
adresini yazdıracağız.
Ve sonra da
pnum değerini yazdıracağız.
değişkeni olacak ve bu da bir adres olacak ve bu
sadece pnum olacak.
Ve sonra görüntülemek istediğimiz son şey, pnum'ın
işaret ettiği değerin ne olduğunu görüntülemek istediğimizdir.
Yani pnum'ın işaret ettiği değer.
Ve bu aslında işaret ettiği tür bir
tamsayı olacak. Yani bu yüzde d olacaktır.
Bunu okuyabilmek için satır beslemeleri ekleyelim.
Ve aslında bu değeri elde etmenin yolunu işaret eden şey dolaylama operatörüdür.
Yani yıldız işaretini ve ardından işaretçi adını yaparsınız.
Bu da size 150 olması gereken değerin neye işaret ettiğini söyleyecektir.
Burada 11. satırda tekrarlamak gerekirse,
num adresini yazdırıyoruz.
Bu bir sayı veya onaltılık sayı olacaktır.
Daha sonra 12. satırda, pnum işaretçisini bir yerde
saklamanız gerektiğinden, yedinci satırda
tahsis edilen pnum adresini yazdırıyoruz.
Daha sonra sadece num'un adresi olan işaretçinin değerini yazdırırız.
Ve pnum adresini yazdırdığımızda, ve işaretini kullanmamız gerekir.
Ve sonra pnum'ın işaret ettiği değeri yazdırırız, bu da dolaylama
operatörünü kullanarak dereferans yapmaktır.
Şimdi devam edip bunu oluşturalım
ve çalıştıralım ve tüm bu değerleri görelim.
Yani bellekte sadece
bu numaranın adresi 0060FF0C'dir.
pnum adresi 0060FF08 gibi
farklı bir şey olacaktır.
Num'un adresi olan pnum'ın değeri ilk satırla eşleşmelidir
ve FFOC yapar.
Ve sonra pnum'ın işaret ettiği değer olan 150.
Yani bir işaretçi gerçekten üç değere sahip olabilir. Adresi, başka bir adres
olan işaretçinin değeri ve ardından bu
adresin işaret ettiği şeyin değeri.
Ve yine, ampersand size her zaman bellekteki
adresi verir.
Pnum bir adres içerir. Bunu sadece işaretçinin adını
söyleyerek yazdırabilirsiniz.
Ve sonra işaret ettiği değeri elde etmek için, yıldız işareti olan dolaylama
operatörünü kullanırsınız ve bu size 150 olan değeri verir.
Bunlar, sözdizimine aşina olmanızı sağlayan temel işaretçilerdir.
Adres operatörünün ne zaman kullanılacağı ve dolaylama operatörünün ne zaman
kullanılacağı ve daha sonra sadece bu işaretçi kavramını ve bir işaretçinin nasıl bir adres değeri
içerdiğini açıklamaya çalışmak, bir işaretçinin değeri bir adrestir.
Bu yüzden bununla oynayın, bu sözdizimini
anlayın, işaretçiler gerçekten önemli bir kavramdır. Teşekkür ederim.