İşaretçiler
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
-
İşaretçi bildirimi
int x = 5; ____ p = &x;Cevabı göster
int x = 5; int* p = &x; -
*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.
-
İş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