Re: [問題] malloc的問題

看板C_and_CPP (C/C++)作者 (「雄辯是銀,沉默是金」)時間12年前 (2013/11/25 14:04), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/4 (看更多)
※ 引述《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

11/25 14:14, , 1F
謝啦 應該真的是運氣好的問題
11/25 14:14, 1F
文章代碼(AID): #1IakXeeD (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 4 篇):
6
10
文章代碼(AID): #1IakXeeD (C_and_CPP)