Yapı, struct Deyimi (Structures)
http://www1.gantep.edu.tr/~bingul/c/index.php?ders=15
enum ile sabit bildirimi yapılırken
struct ile değişken bildirimi yapılır
/* 15prg04.c
Yapıların bir fonksiyona parametere olarak aktarılabilmesi */
#include <stdio.h>
struct TARIH{
int gun,ay,yil;
};
void goster(struct TARIH x){
printf("Tarih: %02d-%02d-%4d\n", x.gun, x.ay, x.yil);
}
int main()
{
struct TARIH n; /* n değişkeni TARIH tipinde */
n.gun = 1;
n.ay = 8;
n.yil = 2003;
goster(n);
return 0;
}
struct ile oluşturulan yapıda typedef deyimi kullanılırsa,
bu yapıdan değişken tanımlamak için tekrar struct deyiminin
kullanılmasına gerek kalmaz.
typedef struct kayit{
char ad[10];
long no;
short sinif;
} ogr1,ogr2;
typedef başka kullanımı da vardır. C dilinde program kodları bu deyimle
tamamen türkçeleştirilebilir. Örneğin bu deyim:
typedef int tamsayi;
şeklinde kullanılırsa programda daha sonra int tipinde bir değişken tanımlarken
şu biçimde kullanılmasına izin verilir.
tamsayi x,y; /* int x,y anlaminda */
bu iş define kullanmaya benziyor
15.1 Birlik, union Deyimi
union kullanmak aynı adrese sahip bir değişkene birden fazla isimle ulaşmaktır(mgb)
union degisken{
int x;
int y;
}osman;
şeklinde tanımlarız
osman.x=5; dersek y değişkenide 5 olur çünkü ikisi aslında aynı şey
sadece farklı isimlerden ulaşıyoruz
örnek:
/* 15prg07.c
union x ve y nin aynı bellek alanını işgal ettiğinin kanıtı */
#include <stdio.h>
union paylas{
int x;
int y;
}z;
int main()
{
int *xAdres,*yAdres;
z.x = 11;
xAdres = &z.x;
printf("x = %d y = %d\n",z.x, z.y);
z.y = 22;
yAdres = &z.y;
printf("y = %d y = %d\n",z.x, z.y);
printf("xAdres = %p yAdres = %p\n",xAdres, yAdres);
return 0;
}
çıktı:
x = 11 y = 11
y = 22 y = 22
xAdres = 0x804974c yAdres = 0x804974c
Union, birlik demektir. İçinde tanımladığın veri tiplerinin en büyüğünün
alanı kadar bir hafıza alanı ayırır. Bu birlikten hangi değişkene
erişirsen eriş hep aynı alana erişir. Sadece değerlendirmesi gerekir.
Bir çok veriyi aynı anda kullanmayacaksan hafıza tasarrufu sağlar.
http://forum.ceviz.net/c-c/106831-union-keywordu.html
union ve struck hakkında çok güzel bilgiler anlatmış arkadaş: http://emreknlk.blogspot.com/2007/01/struct-ve-union-da-ne-ola-ki.html
Hiç yorum yok:
Yorum Gönder