Pointer, bir değişkenin bellekteki adresini işaret eden bir C programlama dilindeki özel bir veri türüdür. Başka bir değişkenin bellekteki adresini işaret eden bir pointer tanımlamak, bellekteki verilere erişimi ve değiştirilmesini mümkün kılar. Bu, özellikle büyük ve karmaşık veri yapılarıyla çalışırken çok yararlı olabilir.
Örneğin, bir dizideki elemanları değiştirmek istiyorsak, her elemana ayrı ayrı erişmek zorunda kalmayız. Bunun yerine, dizinin ilk elemanının adresini işaret eden bir pointer kullanabiliriz. Bu şekilde, pointer aracılığıyla bellekteki diğer elemanlara erişebilir ve değiştirebiliriz.
Pointer'ın syntax'ı ise şu şekildedir:
Bu kod parçasında, "veri_tipi" pointer tarafından işaret edilen veri tipini belirtirken, "pointer_ismi" ise pointer'ın kendisi için bir isimdir. Örneğin, bir integer tipinde bir pointer tanımlamak istiyorsak şu şekilde yapabiliriz:
Bu kod parçasında, "ptr" bir integer tipinde bir pointer olarak tanımlanır. Bu pointer, bellekteki bir integer değişkenin adresini işaret edebilir. Pointer'lar, işaret ettikleri bellek adresindeki veriye erişmek için dereference (yıldız) operatörü (*) kullanılır. Bu işlem, pointer'ın adresini izleyen bellek bölgesindeki veriyi gösterir. Örneğin, şöyle bir kod yazabiliriz:
Bu kod parçasında, "x" adlı bir integer değişken tanımlarız ve değer olarak "10" veririz. Daha sonra, "ptr" adlı bir integer pointer tanımlarız ve "x" değişkeninin bellekteki adresini işaret ederiz. Son olarak, "printf" fonksiyonunu kullanarak "ptr" pointer'ının işaret ettiği bellek adresindeki veriyi yazdırırız. Bu durumda, "10" çıktısı verir. Pointer'lar, dinamik bellek yönetimi, fonksiyon parametre geçişi ve işaretçi aritmetiği gibi daha ileri seviye programlama konularında da çok önemlidir. Ancak, temel kullanımlarını anladıktan sonra, bu konulara geçmek daha kolay olacaktır.
Basit bir gösterin olarak aşağıdaki görseli ele alalım. Burada tanımlanan pointer belleğin 2047 numaralı adresindedir. Pointer içerisinde 1001 değerini tutar. Bu noktada bir "ptr" ifadesine "*" operatörü ile eriştiğimizde "*ptr" geri dönüş değeri olarak 50 değerine ulaşırız.