看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《liptonbin (wind)》之銘言: : 有一個程式如下 : 其中REG=0x50 為某個暫存器address : 我想請問readata是一次取得32bit資料傳回給呼叫A的函數 : 還是一次只傳8bit的資料給呼叫者 : 若是readata是取得32bit 那readata宣告u8 *,這樣不是很怪嗎 : 若是readata是取得8bit 那memcpy看起來一次複製32bit阿 : 請問哪個對阿 : A(u8 *readata) : { : u32 val; : u32 i; : for(i=0;i<10;i++) : { : val=readfun(REG); : memcpy(readata,&val,4) : readata+=4; : } : } : 謝謝啦 memcpy 的型態是: void *memcpy(void *dest, const void *src, size_t n); 它在 dest, src 的地方是用 void*, 也就是它完全不知道你傳給他的 type 是什麼. 你在 size_t n 的地方放 4, 他就會 copy 32bit.. 你的函數 readata 是 u8* 而 copy 32bits 的確很奇怪, 但這是你要想辦法讓它不怪啊 ^^| -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.242.246.249
firejox:如果是陣列就還好阿... 07/10 13:53
※ 編輯: CindyLinz 來自: 210.242.246.249 (09/10 13:18)