08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

C ve Sistem Programcıları Derneği - C Ders Notları - Necati Ergin<br />

#include <br />

#include <br />

typedef struct _Complex {<br />

double m_r, m_i;<br />

}Complex;<br />

void set_cr(Complex *p)<br />

{<br />

p->m_r = (rand() % 2 ? 1:-1) * ((double)rand() / RAND_MAX + rand()% 9);<br />

p->m_i = (rand() % 2 ? 1:-1) * ((double)rand() / RAND_MAX + rand()% 9);<br />

}<br />

void display_c(const Complex *p)<br />

{<br />

printf("(%.2lf %+.2lfi)", p->m_r, p->m_i);<br />

}<br />

Yukarıda tanımlanan set_cr işlevi adresini aldığı bir Complex nesnesini rastgele bir<br />

değerle set ediyor. display_c isimli işlev ise adresini aldığı bir Complex nesnesinin<br />

değerini ekrana yazdırıyor.<br />

Önce okunabilirliği artırmak için bazı simgesel değişmezler tanımlayalım:<br />

#define CHAR 0<br />

#define INT 1<br />

#define DOUBLE 2<br />

#define COMPLEX 3<br />

Şimdi ismi Data olan bir birlik türü yaratalım.<br />

typedef union{<br />

char ch;<br />

int i;<br />

double d;<br />

Complex c;<br />

}Data;<br />

Data türünün sizeof değeri en uzun elemanı olan Complex türden c isimli elemanın sizeof<br />

değeri kadar olur değil mi? Unix ya da Windows sistemlerinde Data türünün sizeof değeri<br />

16 byte olur. Şimdi de ismi Element olan bir yapı türü yaratalım:<br />

typedef struct {<br />

char type;<br />

Data data;<br />

}Element;<br />

Element türünün sizeof değeri elemanlarının sizeof değerlerinin toplamı kadar olduğuna<br />

göre (byte alignment'ın etkin olduğu varsayılıyor) UNIX ve Windows sistemlerinde<br />

Element türünden bir nesne bellekte 17 byte yer kaplar. Oluşturulacak dizinin elemanları<br />

Element türünden olur. Element türünün elemanı olan type Element türden bir nesnenin<br />

elemanı olan data'nın hangi elemanının kullanıldığı bilgisini tutar. Şimdi Element türden<br />

bir nesneyi rastgele bir değerle set edecek bir işlev tanımlayalım:<br />

418

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!