C Dilinde Pointer Kullanımı: Adres ve Değer İlişkisi
C öğrenirken pointer'lar genellikle ilk zorluğa çarpılan konudur. Oysa pointer'lar C'nin en güçlü özelliklerinden biridir ve iyi anlaşıldığında bellek yönetimini, fonksiyon parametrelerini ve veri yapılarını derinlemesine kontrol etmenizi sağlar.
Pointer basitçe bellek adresini tutan bir değişkendir. Bir değişkenin bellek adresine erişmek için & (adres) operatörünü, bir pointer'ın gösterdiği değere erişmek için (dereferans) operatörünü kullanırız.
1#include <stdio.h>23int main() {4int x = 10;5int *ptr = &x; // ptr, x'in adresini tutuyor67printf("x'in değeri: %d\n", x);8printf("x'in adresi: %p\n", (void*)&x);9printf("ptr'nin değeri (adres): %p\n", (void*)ptr);10printf("ptr'nin gösterdiği değer: %d\n", *ptr);1112*ptr = 20; // Pointer üzerinden x'i değiştir13printf("x'in yeni değeri: %d\n", x);1415return 0;16}Bu kodda x değişkeni bellekte bir yere saklanır. ptr pointer'ı bu adresi tutar. & operatörü x'in adresini verir, operatörü ise ptr'nin gösterdiği adresteki değeri verir.
Pointer'ların en yaygın kullanım alanları şunlardır: Fonksiyonlara referans geçme (değişkeni değiştirmek için), dinamik bellek ayırma (malloc/calloc), dizi ve yapı işlemleri, ve bağlı listeler gibi veri yapıları.
Bir fonksiyona pointer geçerek, orijinal değişkeni değiştirebilirsiniz:
1void degistir(int *p) {2*p = 100;3}45int main() {6int sayi = 5;7degistir(&sayi); // Fonksiyon sayi'yi değiştirir8printf("%d\n", sayi); // Çıktı: 1009return 0;10}Pointer'lar başta kafa karıştırıcı olabilir ama düzenli pratik ile alışkanlık haline gelir. Bellek adreslerini görselleştirmeye çalışın ve küçük programlarla deney yapın. Pointer'ları anladığınızda C'nin tüm ileri konuları (dinamik bellek, fonksiyon işaretçileri, veri yapıları) çok daha kolay hale gelir.
0 yorum