Struct ile Pointer Kullanımı

Bu gün pointer’ ın struct ile kullanımından bahsedeceğim ve bir de örnekle açıklamaya çalışacağım.  Daha önce de bahsettiğim gibi pointer, değişkenlerin adres bilgilerini tutan işaretçlerdir. Bir pointerın içeriğine ulaşmak için “*” işareti kullanılır. Pointerlar adres bilgisi üzerinden işlem yaptıkları için referans tipinde değişkenlerdir. Pointerları da kısaca hatırlattıktan sonra struct ile pointer kullanımını daha iyi anlamak için örnek programa bakalım.

 

#include
struct ogrenci
{
char ad[20];
int vize;
int final;
};
void main()
{
struct ogrenci ogr1,*ogr2;
//scanf(“%s”,ogr1.ad);
ogr1.vize=90;
ogr1.final=80;
printf(“%d %dn”,ogr1.vize,ogr1.final);
ogr2=&ogr1;
ogr2->vize=35;//-> işareti pointer ın içeriğini ifade eder
ogr2->final=40;
printf(“%d %dn”,ogr1.vize,ogr1.final);
}

 

Yine struct içinde öğrenciye ait ad, vize ve final notlarını tanımladım. Main fonksiyonu içinde “struct ogrenci” yapısından ogr1 ve pointer türündeki *ogr2 değişkenlerini türettim. ogr1 değişkenine bilgileri atadıktan sonra “ogr2=&ogr1;” satırıyla adresleri birbirine eşitledim. Bunun ardından ogr2 değişkenine değişik değerler atadım ve tekrar ogr1 değişkeninin bilgilerini yazdırdım. Dikkat ediniz, printf fonksiyonularının her ikisi içinde de “ogr1” e bağlı değişkenler yazdırılıyor. ogr1 değişkenini hiç değiştirmediğim halde ogr2 değişkenine değer atadıktan sonra ogr1 bilgileri de değişti. Çünkü değişkenlerin adreslerini birbirine eşitledim bu sayede iki değişkende de aynı adres bilgisini temsil ediyor.

Struct ile pointer kullanımını da elimden geldiği kadar anlatmaya çalıştım. Değer tipindeki struct’ ın pointer yardımıyla nasıl adres üzerinden işlem yaptığını göstermeye çalıştım. İyi çalışmalar…

Bir cevap yazın

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