08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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

int main()<br />

{<br />

struct Data d1, d2, d3, d4;<br />

d1.i = 10;<br />

d1.l = 200000L;<br />

d1.d = 1.25;<br />

d2 = d1;<br />

d3.i = d2.i;<br />

d3.l = d2.l;<br />

d3.d = d2.d;<br />

memcpy(&d4, &d3, sizeof(struct Data));<br />

printf("d1.i = %d\nd1.l = %ld\nd1.d = %lf\n\n", d1.i, d1.l, d1.d);<br />

printf("d2.i = %d\nd2.l = %ld\nd2.d = %lf\n\n", d2.i, d2.l, d2.d);<br />

printf("d3.i = %d\nd3.l = %ld\nd3.d = %lf\n\n", d3.i, d3.l, d3.d);<br />

printf("d4.i = %d\nd4.l = %ld\nsam4.d = %lf\n\n", d4.i, d4.l, d4.d);<br />

}<br />

return 0;<br />

Yukarıdaki main işlevinde struct Sample türünden d1, d2, d3, d4 isimli 4 değişkenin<br />

tanımlandığını görüyorsunuz. d2 değişkenine atama işleci kullanılarak d1 değişkeninin<br />

değeri atanıyor. d4 değişkenine de standart memcpy işlevi kullanılarak d3 nesnesinden<br />

kopyalama yapılıyor.<br />

Tür Dönüştürme İşleci ve Yapı Nesneleri<br />

Bir yapı nesnesi tür dönüştürme işlecinin terimi olamaz. Yani aşağıdaki gibi bir kod da<br />

geçersizdir:<br />

struct S1 {<br />

int a, b;<br />

};<br />

struct S2 {<br />

int a, b;<br />

};<br />

void func()<br />

{<br />

struct S1 s1;<br />

struct S2 s2;<br />

}<br />

s1.a = 10;<br />

s1.b = 20;<br />

s2 = (struct S2)s1; /* Geçersiz! */<br />

Yapı Elemanlarının Bellekteki Yerleşimi<br />

Yapı elemanları belleğe, bildirimde ilk yazılan eleman küçük adreste olacak biçimde,<br />

bitişik olarak yerleştirilir. Aşağıdaki programı derleyerek çalıştırın:<br />

366

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

Saved successfully!

Ooh no, something went wrong!