推 jwliang:謝啦 應該真的是運氣好的問題 11/25 14:14
※ 引述《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