[問題] memcpy的用法

看板C_and_CPP (C/C++)作者 (Arim5566)時間13年前 (2012/11/04 00:28), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串1/1
各位版友好 最近在寫網路相關的程式 想請問一下 如果我用 memcpy(packet->arp_spa,&(inet_addr(address)),4); gcc會給我lvalue required as unary 「&」 operand 但是inet_addr(address)回傳的是一個long int 而我有用&把這個long int的位址提出來 如果我用 in_addr_t tmp=inet_addr(address) memcpy(packet->arp_spa,&tmp,4); 用一個變數傳入memcpy就可以編譯 請問一下為甚麼第一種作法不行? 謝謝各位版友的指教 -- ~宅男的四個徵兆~ ∠□ ○ ! * \○/ ★    (○ ? ╦╦└□ " ○□═ □   □> ║║√√ ╦══╦ ∥    |\ 一回家就上PTT 每天想正妹 以當好人為樂 忘記正妹虧欠自己 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.169.131 ※ 編輯: Arim 來自: 140.117.169.131 (11/04 00:29)

11/04 00:38, , 1F
函數回傳的東西可以當做一個暫時變數 你無法對暫時變數取址
11/04 00:38, 1F

11/04 00:39, , 2F
(專有名詞叫做 rvalue 啦, 不過這裡這麼理解即可)
11/04 00:39, 2F

11/04 12:31, , 3F
不知道能不能用回傳值在 register 上來解釋 XD
11/04 12:31, 3F
文章代碼(AID): #1GbKOjcK (C_and_CPP)
文章代碼(AID): #1GbKOjcK (C_and_CPP)