Menu
CoddyTech

Adres Operatörü (&)

Coddy'nin C Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 3 / 63.

Artık işaretçileri bildirebildiğinize göre, bir bellek adresini bunlarda nasıl gerçekten saklayacağınızı öğrenmeniz gerekiyor. Adres alma operatörü (&), herhangi bir değişkenin bellek adresini almanın anahtarıdır.

& operatörünü bir değişken adının önüne yerleştirdiğinizde, bu değişkenin depolandığı bellek adresini döndürür. Bunu, “Bu değişken bellekte nerede bulunuyor?” diye sormak gibi düşünebilirsiniz.

int age = 25;
int *ptr;
ptr = &age;    // 'age'in adresini 'ptr'ye sakla

Bu örnekte, &age bize age değişkeninin bellek adresini verir. Ardından bu adresi işaretçimiz ptr’ye atarız. Artık ptr, age değişkenini “işaret eder”.

Adres alma operatörü çok önemlidir; çünkü normal değişkenler ile işaretçiler arasındaki köprüdür. Bu operatör olmadan bir işaretçiye hangi değişkeni göstereceğini söyleyemezdiniz. Veri türlerinin eşleşmesi gerektiğini unutmayın — yalnızca bir tamsayının adresini, tamsayılar için bildirilmiş bir işaretçiye atayabilirsiniz.

challenge icon

Görev

Kolay

Değişkenleri işaretçilerle bağlamak için adres alma operatörünün kullanımını gösteren bir C programı yazın. Programınız şunları yapmalıdır:

  1. number adlı bir tamsayı değişkeni tanımlayın ve 42 değeriyle başlatın
  2. letter adlı bir karakter değişkeni tanımlayın ve 'X' değeriyle başlatın
  3. num_ptr adlı bir tamsayı işaretçisi tanımlayın
  4. char_ptr adlı bir karakter işaretçisi tanımlayın
  5. number değişkeninin adresini num_ptr değişkenine atamak için adres alma operatörünü kullanın
  6. letter değişkeninin adresini char_ptr değişkenine atamak için adres alma operatörünü kullanın
  7. Her iki işaretçide depolanan adresleri %p biçim belirleyicisiyle printf kullanarak yazdırın

Çıktınız, işaretçi adreslerini aşağıdaki biçimde göstermelidir:

Address of number: [address]
Address of letter: [address]

Gerçek bellek adresleri program çalıştırmaları arasında değişiklik gösterebilir, ancak biçim ve etiketler yukarıda gösterildiği gibi tam olarak eşleşmelidir. [address], yazdırılan adres için bir yer tutucudur: köşeli parantezleri yazdırmayın.

Kendin dene

#include <stdio.h>

int main() {
    // TODO: Kodunuzu buraya yazın
    // 1. Değişkenleri bildirin ve başlatın
    // 2. İşaretçileri bildirin
    // 3. Adresleri atamak için adres operatörünü kullanın
    // 4. Gösterilen formatı kullanarak adresleri 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.

Mantık & Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online C derleyicisi