CodeBlanks Logo Icon CodeBlanks

İşaretçiler

C# kursu · Uzman · Ders 8/47

int* gibi işaretçilerle bellek adresi öğrenirsin.

İşaretçi (int*) nedir?

Bir işaretçi (pointer), bir değişkenin bellek adresini tutar. C#'ta int* p;, p'nin bir tamsayı adresi olduğunu bildirir. &x ile x'in adresini alır, *p (dereference) ile o adresteki değeri okur ya da yazar.

İşaretçiler yalnızca unsafe blok içinde geçerlidir; yönetilen türleri (string, object) doğrudan işaret edemezler. Bu sınır, GC'nin nesneleri taşımasını güvenli kılar.

Dereference ve işaretçi aritmetiği

İşaretçinin gösterdiği adresteki değere erişmeye dereference denir ve *p sözdizimi kullanılır. *p = 20; o adrese 20 yazar; int v = *p; de okur.

İşaretçi aritmetiği de mümkündür: p + 1 bir sonraki int adrese geçer (4 bayt ileri). Bu, diziler üzerinde hızlı döngü kurmak için kullanışlıdır ve performans kazandırır.

Uygulama İşaretçi ile değeri yazdır

Main'i unsafe olarak işaretle. int a = 7; tanımla, int* p = &a; ile adresini al, Console.WriteLine(*p); ile değeri yazdır.

Örnek çözümü göster
unsafe static void Main() { int a = 7; int* p = &a; Console.WriteLine(*p); }
Örnek çözüm:
using System;

class Program
{
    unsafe static void Main()
    {
        int a = 7;
        int* p = &a;
        Console.WriteLine(*p);
    }
}

Kendini test et

  1. İşaretçi bildirimi

    int x = 5;
    ____ p = &x;
    Cevabı göster
    int x = 5;
    int* p = &x;
  2. *p ne yapar?

    • p'nin adresini alır
    • p'nin gösterdiği adresteki değeri okur/yazar
    • Yeni bir işaretçi oluşturur
    • p'yi siler
    Cevabı göster

    p'nin gösterdiği adresteki değeri okur/yazar — Doğru. *p (dereference) adresteki değere erişir.

  3. İşaretçi sözdizimini eşleştir

    &x
    x'in adresi
    *p
    Dereference
    int*
    int işaretçi türü
    p + 1
    Sonraki int adres

Uzman bölümündeki tüm dersler