看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《jwliang (人類是很善良的)》之銘言: : 各位強者大家好,以下有兩段程式碼,都可以順利執行rum-time無錯誤: : -------------------------------------------------------------------- : 第二段: : struct ns{ : int data; : }; : void allocation(struct ns *temp){ : //temp位址印出為b76ce000 : temp=(struct ns *)malloc(sizeof(struct ns )); : //temp位址印出為9313008 : } : int main(){ : struct ns *temp; struct ns *temp=0; // 把這裡改成這樣, 應該每次都會錯 // 因為 allocation(temp) 無法改變, temp 的值 : //temp位址印出為b76ce000 : allocation(temp); : //temp位址印出為b76ce000 : temp->data=5; : } : 以上兩段程式碼皆為分配記憶體空間,使得temp->data=5可以執行, : 小弟想請問的是,第一段程式碼是將&temp傳入,也就是將temp本身的位址傳入allocation, : 第二段則是把尚未分配空間的指標temp傳入allocation, : 為何都可以讓temp->data=5順利執行呢? : 我在面試的時候寫的是第二段程式碼,面試官說不可能過,第一段程式碼是他心中的答案, : 但我回家試了之後發現似乎皆可,不知其中意義差別為何,會有何影響呢? 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.125.239.46
jwliang:謝啦 應該真的是運氣好的問題 11/25 14:14