*(unsigned short *) bu operator ne yapıyor ?

Başlatan magnetron, 14 Nisan 2013, 18:59:39

magnetron

merhaba forum ,

  *(unsigned short *)&txbuf[10] = dummy


burada ne yaptığını anlamadım

şimdi txbuf[] isimli bir array var bunun 10. elemanının adresini alıyor
onu ne yapıyor? yani *(unsigned short *) bu operator ne yapıyor ?

teşekkür



Tagli

#1
txBuf büyük ihtimalle char türünde tanımlanmış. Bu dizi tahminimce seri porttan (veya benzeri bir dışa aktarma biriminden) gönderilecek verinin tutulduğu ham buffer'ı ifade ediyor, ki ben de hep bu şekilde kullanırım. Bu buffer'ın 11. byte'ından itibaren bir unsigned short türünde değişken yerleştirilecek. Bu atamayı doğrudan yapması mümkün değil, çünkü buffer char türünde. Bu sebeple 11. byte'ın olduğu yeri derleyiciye bir unsigned short pointer'ı gibi gösteriyor, yani cast ediyor. Daha sonra da bu yere bir unsigned short değeri olan dummy değerini yerleştiriyor.

Daha açık olması için işlemi iki parça gibi düşünebilirsin:
(unsigned short*) -> char* olduğunu tahmin ettiğim pointer'ı unsigned short'a cast ediyor. Sonucun yeni_pointer olduğunu düşün.
*(yeni_pointer) -> unsigned short pointer'ının tuttuğu alandaki değeri ifade ediyor. Buraya doğrudan dummy atanıyor.

Seri porttan (veya aktarma ortamı her neyse) ham veri aktaran fonksiyonun, buffer'da ne olduğu konusunda bir fikri olmaz, ki olmamalı da zaten. Bu fonksiyon buffer'ı hiç düşünmeden dış hatta byte byte basar.
Gökçe Tağlıoğlu