Pointer Tanımlama
Coddy'nin C Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 2 / 63.
Artık işaretçilerin ne olduğunu anladığınıza göre, onları nasıl oluşturacağınızı öğrenelim. Bir işaretçi değişkeni bildirmek, derleyiciye işaretçinin hangi veri türünü göstereceğini belirten belirli bir söz dizimini izler.
Bir işaretçi bildirmek için temel söz dizimi şö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;
İşaretçi adreslerini printf kullanarak yazdırırken %p biçim belirleyicisini kullanın. Uyumluluğu ve doğru biçimlendirmeyi sağlamak için işaretçiyi (void *) türüne dönüştürmeniz genellikle önerilir: printf("%p", (void *)ptr);
Yıldız işaretinden önceki veri türünün, işaretçinin hangi tür veriyi göstereceğini belirttiğine dikkat edin. Bu önemlidir çünkü farklı veri türleri bellekte farklı miktarlarda yer kaplar ve derleyicinin uygun bellek yönetimi için bu bilgiyi bilmesi gerekir.
Görev
Kolayint_ptrile başlatılmış,NULLadında bir tamsayı işaretçisi bildirinchar_ptrile başlatılmış,NULLadında bir karakter işaretçisi bildirinfloat_ptrile başlatılmış,NULLadında bir kayan nokta işaretçisi bildirinprintfbiçim belirtecini kullanarak her işaretçide saklanan bellek adreslerini%pile yazdırın. Yazdırırken, doğru biçimlendirmeyi sağlamak için işaretçiyi(void*)türüne dönüştürün; örneğin:printf("Label: %p\n", (void*)ptr);
Çıktınız üç işaretçi adresini aşağıdaki biçimde göstermelidir:
Integer pointer: [address]
Character pointer: [address]
Float pointer: [address]Gerçek bellek adreslerinin değişebileceğini, ancak biçimin ve etiketlerin yukarıda gösterildiğiyle tam olarak 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.
Mantık & Akış 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ıKendi başına pratik yap: Online C derleyicisi