Pointer nedir?
- Go kursu
- Başlangıç
- Ders 63/90
- 4 dk
Pointer'ın bir bellek adresi olduğunu öğrenirsin.
Pointer nedir?
Pointer (işaretçi), bir değişkenin bellek adresini tutan değişkendir. *int türü "bir int'in adresi" demektir. İşaretçi sayesinde aynı değere birden çok yerden erişip onu değiştirebilirsin.
x := 10
p := &x // p, x'in adresini tutar
fmt.Println(*p) // 10: adresteki değer
*p = 20
fmt.Println(x) // 20: x değiştiGo'da işaretçi aritmetiği yoktur (C'deki gibi p++ yapılamaz); bu, bellek hatalarını büyük ölçüde önler.
Ne zaman pointer?
İşaretçi iki durumda kullanılır: bir fonksiyonun çağıranın değişkenini değiştirmesi gerektiğinde ve büyük bir değeri kopyalamadan paylaşmak istediğinde. Küçük değerler (sayılar, küçük struct'lar) için kopya genellikle daha basit ve hızlıdır. Dilimler, map'ler ve kanallar zaten içlerinde referans taşır; onlara işaretçi nadiren gerekir.
Uygulama İşaretçiyle değiştir
x := 10 tanımla, p := &x al. *p = *p * 3 ile x'i üçe katla ve x ile *p'yi tek satırda yazdır.
Başlangıç kodu
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
package main
import "fmt"
func main() {
x := 10
p := &x
*p = *p * 3
fmt.Println(x, *p)
}Beklenen çıktı
30 30
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>var p *int</code> tanımlandıktan hemen sonra <code>p</code>'nin değeri nedir?
- Derleme hatası
- nil Doğru cevap
- 0
- Rastgele bir adres
Açıklama: İşaretçilerin sıfır değeri nil'dir; henüz hiçbir değeri göstermez.
2 Adresteki değer
x := 5
p := &x
fmt.Println(____p) // 5
x := 5
p := &x
fmt.Println(*p) // 5
Açıklama: *p işaretçinin gösterdiği değeri okur.
3 İfade ve anlamı
| Kavram | Anlamı |
|---|---|
*int |
int işaretçisi türü |
&x |
x'in adresi |
*p |
Adresteki değer |
nil |
Boş işaretçi |