看板 C_and_CPP 關於我們 聯絡資訊
各位版友好 最近在寫網路相關的程式 想請問一下 如果我用 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)
LPH66:函數回傳的東西可以當做一個暫時變數 你無法對暫時變數取址 11/04 00:38
LPH66:(專有名詞叫做 rvalue 啦, 不過這裡這麼理解即可) 11/04 00:39
Bencrie:不知道能不能用回傳值在 register 上來解釋 XD 11/04 12:31