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 bildirirYı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.
Görev
KolayNULLolarak ilklendirilmiş,int_ptradında bir integer pointer bildirinNULLolarak ilklendirilmiş,char_ptradında bir character pointer bildirinNULLolarak ilklendirilmiş,float_ptradında bir float pointer bildirin%pformat belirteci ileprintfkullanarak 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;
}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
1Pointer Temelleri
Pointer Nedir?Pointer TanımlamaAdres Operatörü (&)Dereference Operatörü (*)NULL Pointer'larÖzet: Pointer Temelleri4Proje: Basit Metin Aracı
Projeye Genel BakışKarakter Sayma2İşaretçiler ve Diziler
İşaretçi Olarak Dizi İsimleriDizi Elemanları - İşaretçilerİşaretçi Aritmetiğiİşaretçilerin KarşılaştırılmasıÖzet: İşaretçi ile Dizi Gezinme5İşaretçiler ve Fonksiyonlar
Değer ile GeçmeFonksiyonlara İşaretçi Göndermeİşaretçiler ile Değişkenleri DeğiştirmeKlasik Bir Örnek: SwapFonksiyonlara Dizi GöndermeÖzet: Fonksiyon İşaretçi Argümanları8Yapılar ve İşaretçiler
Yapılara İşaretçilerOk Operatörü (->)Yapıları Değer ile AktarmaYapı İşaretçilerini AktarmaYapıların Dinamik TahsisiÖzet: Yapıyı Değiştirme - Ptr11Son Tekrar Görevleri
Tekrar: Dinamik String BirleştirmeTekrar: Struct DizisiTekrar: Kelime Frekans Sayacı3Karakter Dizileri ve Stringler
char Dizisi Olarak StringlerNull Sonlandırıcıscanf ile String Girişistrlen() Kullanımıstrcpy() Kullanımıstrcat() Kullanımıstrcmp() KullanımıÖzet: Temel String Fonksiyonları