Göstericiler
Ali ÇAKIR
0 yorum
C++ Programlama Dersleri, C++ Programlama Erişim, C++ Programlama Göstericiler, C++ Programlama Öğrenme, C++ Programlama Pointer
Göstericiler
Gösterici (Pointer) Tanımı
- Bir değişken kendi türünden bir değer tutar
- Bir gösterici ise hafızadaki bir adresi tutar
İçerisinde bellek adresi taşıyan değişkenlere gösterici denir.
Kullanımı:
VeriTipi *GöstergeAdı; int* xptr; float *a,*b,*c;
Göstergelerin tipleri gösterilen hücrelerde saklanan değerlerin veri tipleriyle uyumlu olmalıdır.
Hatırlatma
- Verilerin hafızada tutulduğu adresleri ifade eden sembolik isimlere değişken denir.
- Bir değişkenin özellikleri;
- ⇒adı
- ⇒türü
- ⇒değeri
- ⇒tanım alanı
- ⇒adresi
Gösterici Operatörleri
- → Adres operatörü ⇒ &
- → İçerik operatörü ⇒ *
int *p; → int pointer p:p,bir tamsayı değişkenini gösterir. *p → content of p:p’nin içeriği ( gösterdiği adresteki değer) int i; → i,bir tamsayı değişken &i → i değişkenin adresi int i; int *p; p=&i; i=5; → *p=5; // aynı ifade cout<<p; //i adresini yazar cout<<*p; // 5 değerini yazar cout<<i; //5 değerini yaza cout<<&i; // i adresini yazar
int *g=0; // bellekte hiç bir yeri göstermez.
Bir göstericinin bellekte hiç bir yeri göstermediğini belirten ifade
Göstericilere İlk Değer Atama
- Göstericilerin tutacağı hafıza adres değerini programcı atayamaz. Bu değeri işletim sistemi belirler.
- Tanımlanmış bir değişkenin adresi göstericiye atanabilir.
int *p; p=15F2; // Yanlış atama ( adrese değer atanmaz) int *p, i; // p gösterici ( pointer ) tanımlandı i=5; // i’ ye 5 değeri atandı p=&i; // i’nin yani 5’in olduğu adres p ye atandı int k=5; int *p; p=&k; // &k k’nın adersi; // k’nın değeri 5// // p’nin değeri 15F1//
Göstericilerin Boyutları
- Tüm göstericilerin boyutları aynıdır. İşletim sisteminin kullandığı adresleme boyutu kadar. 32 bit,64 bit
- Göstericilerin değişken türüne göre etki alanları değişir.
int k; int *p=&k;
Yukarıdaki göstericiler ile aşağıda tanımlanan göstericilerin veri tiplerinden dolayı boyutları farklıdır.
char c; char *p=&c;
Gösterici Aritmetiği
int i, *p; i=5; p=&i; → p’ adresi 1F51 olsun p=p+1; → p= 1F51 + 1 =1F52 // DEĞİL p= 1F51 + 4=1F55 // DOĞRU
!!!Tanımlanan gösterici int veri tipinde tanımlanmış adres te 4 bir yer alır +1 eklenmesi 4 bit daha eklenmesi demektir.
Dizi Gösterici İlişkisi
Dizi adları birer göstericidir. Dizinin adı ilk elemanı gösteren bir göstericidir.
int d[4]= {10,20,30,40};
dizisinin adres ve değerlerine erişmenin gösterge ile ifadesi aşağıda verilmiştir.
#include <iostream> using namespace std; int main () { int d[4]={10,20,30,40}; int*dp; dp=&d[0]; cout<<“d[0]: “<<d[0]<<endl; cout<<“*dp: “<<*dp<<endl; cout<<“&d[0]: “<<&d[0]<<endl; cout<<“dp: “<<dp<<endl; cout<<“*(dp+2): “<<*(dp+2)<<endl; cout<<“d[2]: “<<d[2]<<endl; cout<<“dp+2: “<<dp+2<<endl; return 0; }
Beş elemanlı dizinin en küçük elemanı bulan bir program yazınız.
#include<iostream> using namespace std; int kucuk (int *); int main() { int dizi[5]={},*dp; for(int i=0;i<5;i++) { cout<<i+1<<“. elamn:”; cin>>dizi[i]; } dp=&dizi[0]; cout<<endl<<“Dizinin ilk elemanin adresi= “<<dp<<endl; cout<<endl<<“\t \tDizi”<<endl<<endl; for(int i=0;i<5;i++) cout<<dizi[i]<<“\t”; cout<<endl<<endl<<“Dizinin en kucuk elemani: “<<kucuk(dp); return 0; system(“pause”); } int kucuk(int *dizi1 ) { int k=*dizi1,*enkucuk; for(int i=0;i<5;i++) if(*(dizi1+i)<k) k=*(dizi1+i); enkucuk=&k; return *enkucuk; }
4.5
2
votes
Article Rating