CodeBlanks Logo Icon CodeBlanks

& adres operatörü

  • C kursu
  • Başlangıç
  • Ders 72/116
  • 5 dk

& ile değişken adresini almayı öğrenirsin.

& adres operatörü

& operatörü, bir değişkenin bellekteki adresini verir. Bu adres, bir işaretçiye atanabilir ve böylece işaretçi o değişkeni gösterir.

int x = 10;
int *ptr = &x;
printf("%p\n", (void*)ptr);  /* adres yazar */

Adres, değişkenin bellekteki konumudur; her çalışmada farklı olabilir. %p biçim belirteci adresleri yazdırmak için kullanılır. Adres olmadan işaretçiye hangi değişkeni göstereceğini söyleyemezsin.

& operatörü scanf ile

scanf fonksiyonu, girdiyi bir değişkene koymak için değişkenin adresini ister. Bu yüzden & kullanılır.

int yas;
printf("Yaşın: ");
scanf("%d", &yas);  /* yas'ın adresine yaz */
printf("%d\n", yas);

yas'ın başında & olmadan scanf çalışmaz; çünkü fonksiyon nereye yazacağını bilemez. Bu, adreslerin günlük kullanımdan bir örnektir.

Uygulama İki değişkenin adresini al

int a = 3, b = 5; tanımla. int *pa = &a, *pb = &b; ile her birinin adresini al. printf("%d %d\n", a, b); ile değerleri yazdır. Çıktı 3 5 olmalı.

Başlangıç kodu

main.c
#include <stdio.h>

int main(void) {
    int a = 3, b = 5;
    /* pa ve pb'ye a ve b'nin adreslerini ata */
    /* printf %d %d ile a ve b yazdır */
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>

int main(void) {
    int a = 3, b = 5;
    int *pa = &a, *pb = &b;
    printf("%d %d\n", a, b);
    return 0;
}

Beklenen çıktı

3 5

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Adres alıp işaretçiye ata

Soru
int x = 5;
int *ptr = ____;  /* ptr, x'in adresini tutsun */
Cevap
int x = 5;
int *ptr = &x;  /* ptr, x'in adresini tutsun */

Açıklama: &x, x'in adresini verir.

2 scanf("%d", &x) çağrısında & ne işe yarar?

  • x'i yazdırır Doğru cevap
  • x'in adresini verir
  • x'i sıfırlar
  • x'in değerini verir

Açıklama: &x, x'in adresini verir; scanf bu adrese yazar.

3 Adres ve işaretçi eşleştir

Kavram Anlamı
& adres operatörü
int * int işaretçi türü
%p adres biçimi
scanf adrese yazar

Başlangıç bölümündeki tüm dersler