Menu
Coddy logo textTech

Pointer Tanımlama

Coddy'nin C Journey'sinin Logic & Flow bölümünün bir parçası — ders 2 / 63.

Artık pointer'ların ne olduğunu anladığınıza göre, nasıl oluşturulacaklarını öğrenelim. Bir pointer değişkeni bildirmek, derleyiciye pointer'ın hangi veri türünü işaret edeceğini söyleyen belirli bir sözdizimini takip eder.

Bir işaretçi (pointer) bildirmek için temel sözdizimi şöyledir: data_type *pointer_name;

int *ptr;        // Bir tamsayıya işaretçi bildirir
char *ch_ptr;    // Bir karaktere işaretçi bildirir
float *f_ptr;    // Bir float'a işaretçi bildirir

Yıldız (*) sembolü, bu bildirimi bir pointer bildirimi yapan şeydir. Derleyiciye bu değişkenin gerçek veri değerini değil, bir bellek adresini saklayacağını söyler. int *ptr; bildirimini yaptığınızda, "ptr, bir integer değişkeninin adresini saklayabilen bir pointer'dır" demiş olursunuz.

İşaretçileri henüz geçerli bir bellek adresini göstermiyorlarsa NULL olarak ilklendirmek iyi bir uygulamadır. Bu, rastgele bellek konumlarını göstermelerini engeller: int *ptr = NULL;

printf kullanarak pointer adreslerini yazdırırken %p format belirtecini kullanın. Uyumluluk ve doğru biçimlendirme sağlamak için pointer'ı (void *) türüne dökmeniz (cast) genellikle önerilir: printf("%p", (void *)ptr);

Asterisk işaretinden önceki veri türünün, pointer'ın ne tür bir veriyi işaret edeceğini belirttiğine dikkat edin. Bu önemlidir çünkü farklı veri türleri farklı miktarlarda bellek alanı kaplar ve derleyicinin doğru bellek yönetimi için bu bilgiye ihtiyacı vardır.

challenge icon

Görev

Kolay
Uygun pointer bildirim sözdizimini gösteren bir C programı yazın. Programınız şunları yapmalıdır:
  1. NULL olarak ilklendirilmiş, int_ptr adında bir integer pointer bildirin
  2. NULL olarak ilklendirilmiş, char_ptr adında bir character pointer bildirin
  3. NULL olarak ilklendirilmiş, float_ptr adında bir float pointer bildirin
  4. %p format belirteci ile printf kullanarak her bir pointer içinde saklanan bellek adreslerini yazdırın. Yazdırırken, doğru biçimlendirmeyi sağlamak için pointer'ı (void*) türüne dönüştürün, örneğin: printf("Label: %p\n", (void*)ptr);

Çıktınız üç pointer adresini aşağıdaki formatta göstermelidir:

Integer pointer: [address]
Character pointer: [address]  
Float pointer: [address]

Gerçek bellek adreslerinin değişebileceğini, ancak formatın ve etiketlerin tam olarak yukarıda gösterildiği gibi eşleşmesi gerektiğini unutmayın.

Kendin dene

#include <stdio.h>

int main() {
    // TODO: İşaretçilerinizi burada bildirin
    
    
    // TODO: İşaretçi adreslerini gerekli formatı kullanarak yazdırın
    
    
    return 0;
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Logic & Flow bölümündeki tüm dersler