Aydın Yakar
Posted on October 20, 2021
Değişkenler hafıza da (memory
) "değişken adresi" ve "değeri" şeklinde tutulurlar. Bir değişkenin değerini değiştirmek istediğimizde hafıza da o değişkenin adresine gider ve değerini değiştiririz.
İşaretçiler ise hafızadaki değişkenin adresini almak veya bu adresteki değeri değiştirebilmemiz için kullanılmaktadır.
package main
import "fmt"
func main() {
i := 1
fmt.Println(i)
islem(i)
fmt.Println(i)
islemptr(&i)
fmt.Println(i)
fmt.Println(&i)
}
func islem(deger int) {
deger = 0
}
func islemptr(deger *int) {
*deger = 0
}
1
1
0
0xc000126000
Örnekte görüldüğü üzere i
değişkenine değer atanıp ekrana yazdırılıyor.
func islem(deger int) {
deger = 0
}
Fonksiyonlar da girdi için kullanılan parametreler aslında girilen değerin hafıza da yeniden oluşturulmasını sağlar. Yani örnekte deger
adında yeni bir değişken oluşturup buna fonksiyon içerisinde atama yapmaktadır. Bu durumda fonksiyon dışındaki i
değişkenine bir etkisi olamamıştır.
func islemptr(deger *int) {
*deger = 0
}
Bu fonksiyonda ise int
değer bulunduran hafıza adresi alacağını *int
türü ile belirtiyoruz. Fonksiyonu çalıştırırken ise işaretçimiz (pointer) i
değişkeninin adresini &
sembolü ile fonksiyona giriyor. Ardından fonksiyon içerisinde *
sembolü ile de ilgili adresin değerini değiştireceğimiz belirtilmiş oluyor.
Yani değişkenin adresini &
sembolü ile, değişken adresindeki değerini *
sembolü ile belirtiyoruz.
Posted on October 20, 2021
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.