C dilinde Struct ile Fonksiyon Kullanımı

Dün C dilinde struct yapısını örneklerle anlattım. Bu gün de struct ile fonksiyon kullanımını anlatacağım. Bu yazıda, struct içinde tanımlanan değişkenler nasıl fonksiyona gönderilir, fonksiyon içinde bu değişkenler nasıl kullanılır, gibi soruların cevabını bulabileceksiniz. Bu konuyu açıklamak için tarih bilgilerini ekrana yazdıran bir örnek hazırladım. Önce örnek programı verip ardından gerekli açıklamalarda bulunacağım.

[cc lang=’c’ ]#include
//Tarih struct’ı
struct tarih
{
int gun;
int ay;
int yil;
};
//yaz fonksiyonunun prototipi
void yaz(struct tarih);

void main()
{
struct tarih trh;
trh.gun=8;
trh.ay=1;
trh.yil=2010;
yaz(trh);
printf(“%dn”,trh.yil);
}

void yaz(struct tarih trh)
{
printf(“%d.%d.%dn”,trh.gun,trh.ay,trh.yil);
trh.yil=2011;
}[/cc]

Bu örnekte de tarih adında bir struct tanımladım. Tarihe ait olan gün, ay, yıl gibi değişkenleri de bu struct içinde tanımladım. Bir sonraki satırda, struct‘ ı göndereceğim yaz  fonksiyonunun prototipini tanımladım. main fonksiyonunda ise, struct içinde tanımladığımız değişkenlere ulaşabilmek için “struct tarih” türünde “trh” adında bir değişken tanımlıyorum. “trh” değişkeni  ve nokta(.) ile struct içindeki değişkenlere ulaşıyorum. Fonksiyon içindeki satırlara gelirsek, fonksiyon zaten struct türünde bir parametre alıyor. Yaptığı işlem ise aldığı struct içindeki değişkenleri ekrana yazdırmak.

Ayrıca struct konusuna ilk başladığım gün “structlar değer tipindedir” demiştim. Bunu da bu programda test ettim. Fonksiyon içinde ikinci satırda “trh.yil=2011;” deyimiyle “yil” değişkenine 2011′ i atadım. Main fonksiyonu içinde yazdırdığımda ise yılın değişmediğini, 2010 olarak kaldığını gördüm. Bu da bize struct’ ın referans tipinde olmadığını yani adres bilgisi üzerinden işlem yapmadığını gösterdi. Eğer main fonksiyonu içinde bir dizi tanımlamış ve diziyi fonksiyona gönderip değerlerini değiştirmiş olsaydık, adres bilgisi üzerinden işlem yapıldığı için dizinin değerleri değişmiş olacaktı.

Kısaca özetlemek istersek, bu yazımda da struct fonksiyona nasıl gönderilir, fonksiyon içinde değerlere nasıl ulaşılır ve nasıl kullanılır bu soruların cevabını vermeye çalıştım. Ayrıca değer tipi ve referans tipi arasındaki farkı görmeniz açısından program içinde küçük bir örnek verdim. Görüşmek üzere iyi çalışmalar…

Bir cevap yazın

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