& 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
#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
#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
int x = 5;
int *ptr = ____; /* ptr, x'in adresini tutsun */
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 |