1. Göstericiler
Programlama dilleri 1
- 5. hafta -
Araş. Gör. Nesibe YALÇIN
BİLECİK ŞEYH EDEBALİ ÜNİVERSİTESİ
MÜHENDİSLİK FAKÜLTESİ
BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
2. 2
Göstericiler
― Her değişkenin tipi, adı, değeri ve bellekte bulunduğu
bir adresi vardır.
― Adres, o değişkenin bellekteki konumunu gösteren
bilgidir.
― Bir değişkenin bellek üzerindeki adresini öğrenmek
için "&" operatöründen yararlanılır. & adres operatörü,
önünde bulunan değişkenin adresini bildirir.
3. 3
Göstericiler
― Gösterici ise bu adres bilgisini tutmaya yarayan
değişken türüdür.
― Pointer, işaretçi ve gösterge de denir.
― * içerik operatörü de önündeki değişkenin bir
gösterici (pointer) olduğunu bildirir.
― Göstericiler sayesinde hafızaya direkt erişim
yapabilmekteyiz.
5. 5
Göstericiler
― int sayi=4;
― int *p= &sayi;
― *p=3;
― int sayilar={4, 12, -3, 0, 14, 7, 11};
― *p= sayilar;
― p bir göstericidir ve kendisine ancak bir tamsayının/tam
sayı dizisinin başlangıç adresi atanabilir.
7. 7
Göstericiler
― int sayi=4;
― int *gosterici= &sayi;
― //göstericinin gösterdiği adresteki değer
― printf(“%d”,*gosterici);
― printf(“adres: %p”,&sayi);
― //göstericinin tuttuğu adres
― printf(“adres: %p”,gosterici); adres: 001BFE34
― printf(“adres: %x”,gosterici); adres: 1bfe34
8. 8
Göstericiler
― Gösterici işlemlerinde * ve & operatörlerini birlikte
kullanmak mümkündür. int *p=*&a;
― Ancak bu operatörler birbirinin tersi işlemleri yerine
getirdiği için, birbirlerini götürmeleri söz konusudur.
#include <stdio.h>
#include <conio.h>
void main()
{
int a[]={2, 4, -1, 0, 13};
int *p=*&a;
printf("%pn",p);
printf("%d",*p);
getch (); }
9. 9
Gösterici Aritmetiği
― Bir adres bilgisini artırarak ya da azaltarak, önceki veya
sonraki adreslere ulaşabiliriz.
― int a;
a tamsayı değişkeninin adresi, &a: 0026FCC8
&a+1 : 0026FCCC
&a-1 : 0026FCC4
― Yanlış kullanımlar: &a++, &++a, ++&a
― int *p=&a; p: 0026FCC8
― p++; //p=p+1*sizeof(int) - 0026FCCC
― p--; //p=p-1*sizeof(int) - 0026FCC4
17. 17
Null Göstericiler
― Bir göstericinin bellekte herhangi bir adresi
göstermemesi veya önceden göstermiş olduğu adresin iptal
edilmesi istenirse NULL sabiti kullanılır.
― int *ptr=NULL; // int *ptr=0;
18. 18
Dikkat !!!
― Göstericilere ilk değeri atanmalıdır.
• Göstericilerde daima legal bir adres veya NULL değeri
bulunmalıdır.
― Göstericiler arasında dönüşüm yapılırken dikkat
edilmelidir.
― İlk değeri atanmamış veya 0 olarak atanmış göstericilerin
gösterdiği hücrelere erişilmeye çalışıldığında hata ile
karşılaşılabilir!