Konular

C Programlama da Gösterge (Pointer) Kavramı

 
Değişkenlerin kapladıkları hücrelerin adreslerini saklamak için başka değişkenler de kullanabiliriz. Bu değişkenlere gösterge adı verilir. Göstergeler, diğer değişkenler gibi, sayısal bir değişkenlerdir. Bu sebeple kullanılmadan önce program içinde bildirilmelidir. 
 
Sözdizimi :   tip_adı *gösterge_adı;
 
int *bayraktar;
float *x, *y, *z
 
Gösterge Operatörleri ( & ve *) : "&" değer atama operatörüdür. Örneğin bayraktar = &y; ifadesinde y değişkenini gösteren bayraktar göstergesidir. "*"  yönlendirme operatörünün göstergeyi tanımlamanın dışında bir görevi daha vardır. Örneğin *bayraktar ifadesi, bayraktar'ın gösterdiği hücrenin içeriğine ulaşmak içinde kullanılabilir. *bayraktar = 66; gibi...
 
C Programlama da Gösterge (Pointer) Kavramı
Bir göstergenin bellekte herhangi bir hücreyi göstermesini istemediğimiz zaman NULL isimli sabit kullanılır. NULL göstergenin bellekte hiç bir yeri göstermediğini belirten 0 değeridir.
int *bozok = NULL;
 
Dinamik Bellek Kullanımı: Programın çalışması esnasında özel komutlar kullanarak bellekten yer alınıp kullanılmasına dinamik bellek kullanımı adı verilir. Dinamik değişkenler için bellekte ayrılan yere yığın (heap) adı verilir. Dinamik bellek kullanımını new ve delete komutları ile gerçekleştiririz..

new komutu ile bellekten istediğimiz veri Npi boyutunda bir yer alabiliriz.
int *ornek; //ornek adlı tamsayı gösterecek bir gösterge tanımlıyoruz.
ornek = new int; //bellekten tamsayı kadar yer ayrılır, bu yerin adresi burada ornek'e aktarılır.
*ornek = 9; //bellekten alınan yeni yere 9 atanır.
 
int *bozok=new int(9); //değişken tanımlanması esnasındada ilk ataması yapılabilir.

Dinamik bir Dizi Oluşturalım ve tekrar bellekten Silelim :
int *ornekdizi; //ornekdizimiz tamsayı gösterecek şekilde tanımlanır. 
ornekdizi=new int[10]; //bellekten 10 tamsayı dizisi için yer tahsis edilir ve dizinin adresi ornekdizi'ye atanır.
ornekdizi[2]=16; //bellekten alınan dizinin 1.indeksteki elemanına 15 atanır.
C Programlama da Gösterge (Pointer) Kavramı
Bellekten new ile aldığımız yerler, kullanımları sona erdiğinde yeniden kullanılamazlar. Bu nedenle bellekten aldığımız hücreleri program bitmeden delete komutu ile silmemiz gerekir.
 
int *bozok=new int; //bozok göstergesine tamsayı boyutunda yerin adresi atanır.
*bozok=16; //bozok göstergesinin gösterdiği yere 16 atanır.
cout<<*bozok; //atanan 16 değeri yazdırılır.
delete bozok; //ayrılan yer belleğe geri döndürülür.
 
int *ornekdizi; //ornekdizi adında tamsayı gösterecek bir gösterge tanımlanır.
ornekdizi=new int[8]; //bellekten 8 tamsayı dizisi için yer ayrılır ve dizinin adresi ornekdizi'e atanır.

ornekdizi[1]= 13; //bellekten alınan dizinin 1.indeksteki elemanına 13 atanır.
delete [] ornekdizi; //oluşturulan dizinin tüm elemanları belleğe geri döndürülür.

Örnek:
#include <stdio.h>
#include <conio.h>
#include <cstdlib>
#include <iostream>

using namespace std;

void oku(int[],int);
int main(int argc, char *argv[])
{
   int mevcut, toplam=0;
   int max=0;
   int *notlar;
   cout<<"Sinif mevcudunu Giriniz: ";
   cin>>mevcut; //Sınıf mevcudunu okuyoruz
   notlar=new int[mevcut]; //Sınıf mevcudu kadar dinamik dizi yaratıyoruz
   oku(notlar,mevcut); 
   
   for(int i=0; i<mevcut;i++) 
   {
           toplam+=notlar[i];
           if (notlar[i]>max)
           max=notlar[i];
   }
   cout<<"Sinif Ortalamasi= "<<toplam/mevcut<<endl;
   cout<<"En yuksek not = "<<max<<endl;
   delete [] notlar;
   getch();
}
void oku(int notDizi[], int boyut) //Notları okuduğumuz fonksiyon
{
     cout<<"Notlari Giriniz:";
     for(int i=0; i<boyut;i++)
             cin>>notDizi[i];
}
 
C Programlama da Gösterge (Pointer) Kavramı
 

Kaynak

Yorumunuzu Ekleyin

C Programlama Dilinde Değişkenler

Değişkenler bir programlama dilinin en önemli bileşenlerindendir. En basit bir aritmetik işlemin bile kullanıcının girdiği değerleri saklamak için çeşitlik bellek alanlarına ihtiyacı vardır. İşte değişkenler bu bellek adreslerine verilen isimlerdir.

11,422 Okunma 1 Yorum 12/05/2015 00:26:24 22/05/2015 19:41:38

#define Ve #include Önişlemci Tanımlamaları

Hemen bütün C derleyicileri, özel önişlemci emirlerini tanıyan bir önişlemciyi yapılarında bulundururlar.

10,312 Okunma Henüz yorum yapılmamış 22/05/2015 19:27:09 29/05/2015 14:10:10

C Programlama printf() Fonksiyonu

Standart C kütüphanesinin bir parçası olan printf() C Programlama Dili'nin genel amaçlı çıktı alma fonksiyonudur.

9,194 Okunma Henüz yorum yapılmamış 22/05/2015 18:53:57 03/06/2015 15:57:27

DEV C++ Kurulumu

C çalışmak için bir editöre ve Derleyiciye ihtiyacınız var. Belkide en kolay çözüm DEV C++ kullanmak. Çünkü ücretsiz ve GNU lisansı ile dağıılmakta ve Mingw/GCC derleyiciside içerisinde bulunmaktadır.

9,092 Okunma Henüz yorum yapılmamış 12/05/2015 14:32:18 12/05/2015 14:33:21

C Diline Giriş

Blok Yapısı, Açıklamalar, Boşluklar, Kapsam

8,433 Okunma Henüz yorum yapılmamış 15/05/2015 19:07:26 29/05/2015 14:03:24

C Fonksiyon Yapısı

8,071 Okunma Henüz yorum yapılmamış 17/06/2015 18:31:11 17/06/2015 18:46:12

Tip Dönüşümleri

7,796 Okunma Henüz yorum yapılmamış 22/05/2015 17:39:09 29/05/2015 17:50:06

Operatörler

C programlamada toplama, çıkarma, çarpma, mod alma operatörleri

7,622 Okunma Henüz yorum yapılmamış 29/05/2015 16:49:24 29/05/2015 16:49:35

Yükleniyor...