[理工] 計組_97台科電子

看板Grad-ProbAsk作者 (fmtshk)時間6年前 (2019/11/19 15:05), 編輯推噓1(109)
留言10則, 2人參與, 6年前最新討論串1/1
https://i.imgur.com/g2tVcv1.jpg
想問一下"cp=(char*)&data;"這段碼 旁邊寫"重新定義data type," 所以cp在這指令之後data type被定義成什麼? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.11.193.65 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1574147128.A.6B7.html

11/19 16:00, 6年前 , 1F
不是重新定義cp,是把data轉型
11/19 16:00, 1F

11/19 16:00, 6年前 , 2F
data本來的型別是long,&data的型別是(long *)
11/19 16:00, 2F

11/19 16:00, 6年前 , 3F
這行想把data的第一個byte賦值給cp,但cp是char *
11/19 16:00, 3F

11/19 16:00, 6年前 , 4F
所以寫(char *)&data 把data的第一個byte所在的位置賦
11/19 16:00, 4F

11/19 16:00, 6年前 , 5F
給cp
11/19 16:00, 5F

11/19 16:00, 6年前 , 6F
做完這步後,cp指向data的第一個byte 就是12
11/19 16:00, 6F

11/19 16:00, 6年前 , 7F
那cp+2就是指向data的第3個byte,就是56
11/19 16:00, 7F

11/19 16:00, 6年前 , 8F
不過這種題目要小心 如果是little endian 那順序會反過
11/19 16:00, 8F

11/19 16:00, 6年前 , 9F
11/19 16:00, 9F

11/19 16:03, 6年前 , 10F
瞭解,謝謝
11/19 16:03, 10F
文章代碼(AID): #1TqvGuQt (Grad-ProbAsk)