Adres Operatörü (&)
Coddy'nin C Journey'sinin Logic & Flow bölümünün bir parçası — ders 3 / 63.
Artık işaretçileri tanımlayabildiğinize göre, bir bellek adresini onlarda gerçekte nasıl saklayacağınızı öğrenmeniz gerekiyor. Adres operatörü (&), herhangi bir değişkenin bellek adresini almanın anahtarıdır.
Bir değişken adının önüne & operatörünü yerleştirdiğinizde, o değişkenin saklandığı bellek adresini döndürür. Bunu "Bu değişken bellekte nerede yaşıyor?" diye sormak gibi düşünün.
int age = 25;
int *ptr;
ptr = &age; // 'age' değişkeninin adresini 'ptr' içinde saklaBu örnekte, &age bize age değişkeninin bellek adresini verir. Daha sonra bu adresi ptr pointer'ımıza atarız. Şimdi ptr, age değişkenini "işaret eder".
Adres operatörü (address-of operator) temeldir çünkü normal değişkenler ile işaretçiler (pointers) arasındaki köprüdür. O olmadan, bir işaretçiye hangi değişkeni işaret etmesi gerektiğini söyleyemezdiniz. Veri tiplerinin eşleşmesi gerektiğini unutmayın; bir tam sayının (integer) adresini yalnızca tam sayılar için tanımlanmış bir işaretçiye atayabilirsiniz.
Görev
KolayDeğişkenleri işaretçilerle (pointers) bağlamak için adres operatörünün kullanımını gösteren bir C programı yazın. Programınız şunları yapmalıdır:
numberadında bir tam sayı (integer) değişkeni tanımlayın ve 42 değeriyle başlatınletteradında bir karakter (character) değişkeni tanımlayın ve 'X' değeriyle başlatınnum_ptradında bir tam sayı işaretçisi (pointer to an integer) tanımlayınchar_ptradında bir karakter işaretçisi (pointer to a character) tanımlayınnumberdeğişkeninin adresininum_ptrişaretçisine atamak için adres operatörünü kullanınletterdeğişkeninin adresinichar_ptrişaretçisine atamak için adres operatörünü kullanınprintffonksiyonunu%pformat belirleyicisi ile kullanarak her iki işaretçide saklanan adresleri yazdırın
Çıktınız, işaretçi adreslerini aşağıdaki formatta görüntülemelidir:
Address of number: [address]
Address of letter: [address]Gerçek bellek adresleri programın her çalıştırılmasında farklılık gösterecektir, ancak format ve etiketler yukarıda gösterilenle tam olarak eşleşmelidir.
Kopya kağıdı
Adres operatörü (&), bir değişkenin bellek adresini döndürür:
int age = 25;
int *ptr;
ptr = &age; // 'age' değişkeninin adresini 'ptr' içinde saklaAdres operatörü, değişkenleri işaretçilerle bağlamak için gereklidir. Veri tipleri eşleşmelidir - bir tam sayının adresini yalnızca tam sayılar için bildirilmiş bir işaretçiye atayabilirsiniz.
İşaretçi adreslerini printf ile yazdırmak için %p format belirleyicisini kullanın.
Kendin dene
#include <stdio.h>
int main() {
// TODO: Kodunuzu buraya yazın
// 1. Değişkenleri tanımlayın ve başlatın
// 2. İşaretçileri (pointers) tanımlayın
// 3. Adresleri atamak için adres operatörünü (&) kullanın
// 4. Adresleri gösterilen 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ı