Skip to main content

C Programlama : Pointer Ve Dizi İlişkisi

Göstericilerle çalışmak zordur, göstericileri  eğer programlama başlarken  iyice sindirmezseniz muhtemelen daha sonra göstericileri kullanarak bir şeyler geliştirmek oldukça zor olacaktır.  Bu yazımda göstericilere  giriş olması açısından Pointer ve dizi ilişkisi adına bir şeyler yazacağım. Öncelikle gösterici nedir , ne işe yarar ?  Gösterge değişkenler ( Pointer)  bir değişkenin adresini tutan bir değişkendir. Örneğin biz  C  Programlama dilinde

int a  =5 ;   gibi bir tanımlama yaptığımızı düşünelim.       Pointer dediğimiz değişkenler bu a değişkenin değerine ulaşmak için direk a  değişkenini adresini kullanırlar  ve bu yöntem klasik yönteme göre çok daha hızlı ve performanslıdır.    Bu yüzden özellikle bir program geliştirirken ve büyük özellikle büyük verilelerle çalışan programlar çalışırken  pointer değişkenlerini kullanırız.   Tahmin edebilirsiniz ki bu hızı kazanırken bir şeylerden feragat ediyoruz kolaylık.   Dizi değişkenlerle çalışmak  , pointerlarla  çalışmaktan daha zordur.    Pointer değişkenler bu yüzden öğrenilmesi zaman alan , yada söyle diyelim öğrenildiği zannedilen ama pratikte kullanılmadığı sürece öğrenilmeyen bir kavramdır.

Basit olarak  bir pointer değişken aşağıdaki gibi tanımlanır .

int *ptrDegisken;     —>  değiskenTürü  * DegiskenAdi

Biz bu şekilde bir tanımlama yaparak  ptrDegisken adlı değişkende bir adres tutacağımızı  derleyiciye bildiriyoruz.  Örneğin yine basit veriler üzerinden gidelim . Ve aşağıdaki gibi tanımlamalar  yaptığımızı düşünelim .

1- int x = 5;
 
2-  int *pointerDegisken;
 
3 -pointerDegisken = &;x;

Birinci satırda   standart bir değişken tanımlaması yaptık.  2. satırda ise bir adres tutacağımız  pointerDegisken adında bir değişken tanımladık.  3. satırda ise   yeni tanışladığımız pointer değişkenimizin  x ‘in  bellekteki adres değerini tutacağını derleyicimize söyledik.  Dikkat Tutulan  5 değeri değil X”in bellek üzerinde ki Hexadecimal değeridir.

 
Bir pointer değişkenin içeriğini göstermek için

 
    printf("%d",*pointerDegisken);

şeklinde bir kullanım yapmak gerekir. Yukarıda ki kod , ekrana Pointer değişkenin gösterdiği adreste tutulan veriyi ekrana yazdıracak yani bizim örneğimiz için çıktı 5 olacaktır.

Eğer biz direk tutulan adresi yazdırmak isteseydik

 
    printf("%d",pointerDegisken);

şeklinde kullanım ile bunuda yazdırabilirdik.

Hemen öğrendiklerimizi uygulayacak bir C örneği çözelim.

Programımız On eleman büyüklüğünde bir tamsayı diziye değerler giren ve daha sonra tanımlanan bir gösterge değişkenini kullanarak dizi elemanlarının ortalamasını bir fonksiyon araclığıyla bulan bir program olacak.

 
/***
On eleman büyüklüğünde bir tamsayı diziye değerler giren ve daha sonra tanımlanan bir gösterge değişkenini kullanarak
dizi elemanlarının ortalamasını  cağırdığı bir fonksiyon  ile bulan C programını yazınız. 
C ile Veri Yapıları 1.9
 
Aytaç CİCİ  www.aytaccici.com  
**/
#include <stdio.h>
#define BOYUT 9
void ortalama(int []);
/* Ana Program Baslangıcı */
main(void)
{
 int i=0;
 int dizim[BOYUT];
 int *ptrDizi;
  do{
  printf("Sayi Giriniz-->");
  scanf("%d",&dizim[i]); 
  i++; 
  }while(i<=BOYUT);  
  ptrDizi=dizim;
  ortalama(ptrDizi);
 getchar();                    
}
/** Ana Program Sonu */
 
/* Ortalama Fonksiyonu Baslangıcı*/
void ortalama(int *ptrDizi)
{
   int sayac =0;
   float ortalama=0;
   while(sayac<=BOYUT)
   { 
 
      printf("%d. eleman--> %d \n",(sayac+1),*ptrDizi); 
      ortalama += *(ptrDizi);        
                  // O anki dizi elemanını toplamını ortalama değişkenie ekler.
          ptrDizi++;   //bir sonraki dizi elemanını göstermesini sağladık.
 
      sayac++;  
 
   }
     printf("\t \t Ortalama --> %.2f",(ortalama/(BOYUT+1)));
       getchar();     
}
/* Ortalama Fonksiyonu Sonucu*/

Başka bir yazıda görüşmek dileğiyle.

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

Aytaç Cici

İstanbul Üniversitesi Bilgisayar Mühendisliği mezunu bir Yazılım Geliştirici. Çeşitli zamanlarda Java, PHP, C# ve Delphi gibi diller kullanarak yazılım geliştirmiştir. Bir dönem SEO alanında da çalışmalar yapmıştır.

C Programlama : Pointer Ve Dizi İlişkisi” hakkında 1 yorum

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Email
Print