我正在嘗試使用指針將uint16_t值插入到uint8_t數組中。我會認爲下面會起作用,但一直沒能做到。什麼問題是什麼線索?使用指針將uint16_t值注入到uint8_t數組中?
uint8_t myarray[10];
uint16_t value = 10000;
uint16_t * myptr = (uint16_t *)(myarray+2);
*myptr = value;
我知道我可以這樣做,但爲什麼不上面的工作?
uint8_t myarray[10];
uint16_t value = 10000;
uint8_t * myptr = (myarray+2);
uint8_t * myptr2 =(myarray+3);
*myptr = value>>8;
*myptr2 =value;
究竟是第一個代碼問題? – jplot
沒有太多的細節,似乎你是「別名」,使兩種不同的類型生活在同一個記憶。如果它們是「兼容類型」,那麼只能「左移」左值(*兼容類型僅僅因添加任何有符號,無符號或易失性*的組合而不同)。關於此主題的一些輕讀:http:// dbp-consulting .com/tutorials/StrictAliasing.html – HostileFork