CodeBlanks Logo Icon CodeBlanks

Pointer nedir?

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şti

Go'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

main.go
package main

import "fmt"

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
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

Soru
x := 5
p := &x
fmt.Println(____p)  // 5
Cevap
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

Başlangıç bölümündeki tüm dersler