C Dilinde Struct

Aralarında mantıksal bir ilişki bulunan farklı türden veriler “struct” lar içerisinde bir bütün olarak tanımlanabilirler. Bir örnek verecek olursak: Öğrencilere ait ad, soyad, vize notu, final notu gibi değişkenleri her öğrenci için ayrı ayrı tanımlaycağımızı düşünürsek iş, içinden çıkılmaz bir hal alır. C dilinde struct anahtar kelimesi ile programcılar kendi değişken tiplerini oluşturabilirler. Bunun için de struct vardır  “Struct” lar diziler gibi bellekte sürekli kalırlar fakat dizilerin aksine değer tipindedirler ve

struct yapı-adı
{
tip adı değişken adı;
tip adı değişken adı;
};

şeklinde tanımlanırlar.Struct kullanarak öğrenci bilgilerini tutan örnek bir program yazalım.

 

#include
struct kayit
{
char ad[20];
int vize;
int final;
float ort;
};
void main()
{
struct kayit ogr;
printf(“ogrencinin adi:”);
gets(ogr.ad);
printf(“ogr vize-final gir :”);
scanf(“%d%d”,&ogr.vize;,&ogr.final;);
ogr.ort=ogr.vize*0.6+ogr.final*0.4;
printf(“ogr adi: %sn”,ogr.ad);
printf(“ogr vize: %d    final:%dn”,ogr.vize,ogr.final);
printf(“ogr ort: %fn”,ogr.ort);
}

Gördüğünüz gibi programda struct yapısı içinde sürekli kullanacağım değişkenleri tanımladım. Main fonksiyonu içinde ise struct yapısından “ogr” adında bir değişken tanımladım. Böylece struct içinde tanımladığım değişkenlere “ogr” ile ulaşıyorum. (ogr.vize, ogr.ad … gibi) . Genel tanımlanış şeklini öğrendikten sonra dizi şeklinde nasıl kullanılır bir de ona bakalım. Bir örnek programla da struct ile birlikte dizi kullanımını göstereceğim.

#include
struct kayit
{
char ad[20];
int vize;
int final;
float ort;
};
void main()
{
int i;
struct kayit ogr[3];
for(i=0;i<3;i++)
{
printf(“ogrencinin adi:”);
scanf(“%s”,ogr[i].ad);
printf(“ogr vize-final gir :”);
scanf(“%d%d”,&ogr;[i].vize,&ogr;[i].final);
ogr[i].ort=ogr[i].vize*0.6+ogr[i].final*0.4;
}
for(i=0;i<3;i++)
printf(“%s  %2f    “,ogr[i].ad,ogr[i].ort);
}

Bu programda da struct yapısından tanımladığımız ogr değişkenini dizi şeklinde tanımladım. Diğer kısımlar ise bildiğimiz dizi işlemleri ama dikkat edilmesi gereken nokta değişkenlerin struct yapısından alınma şekli. Sıklıkla yapılan hatalardan biri “ogr[i].ad” yerine “ogr.ad[i]” şeklinde yazılmasıdır. Buna dikkat edildikten sonra struct kullanılan programlarla ilgili bir sıkıntı kalmayacaktır.

Bir cevap yazın

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