看板 C_and_CPP 關於我們 聯絡資訊
最近遇到了這個問題 所幸網路上也有人討論了這問題(內有程式碼): http://soarlin.pixnet.net/blog/post/22520209 主要是說在stuct中若是有char *成員的話 在每次malloc一個struct node的實體時,如果要使其中的char *成員指向一個字串時 ,必須要在另外再malloc其記憶體空間(大小為該字串的大小) 下面是我想問的問題 str是一個指向來自standard input的字串 char *str=(char *)malloc(sizeof(char)*SIZE); scanf("%s",str); 並且將str的內容(該字串的位置)指定給node->name; //type為char * node->name=str; //Head->name也指向所輸入的standard input 只是在這邊會出現不如預期的結果(如果重複上面動作的話) 必須要另外malloc該char*的空間才會正常 在連結上面的解釋是如果沒有另外malloc的話所有的struct node的實體都會使用到 同一個char *指標的記憶體空間 // why? 可能問題表達的不是很好 不過看上面的連結會比較清楚 謝謝各位大大的指教 -- ~宅男的四個徵兆~ ∠□ ○ ! * \○/ ★    (○ ? ╦╦└□ " ○□═ □   □> ║║√√ ╦══╦ ∥    |\ 一回家就上PTT 每天想正妹 以當好人為樂 忘記正妹虧欠自己 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.138.145.45
stilltin:從連結看起來是 str 都是同一塊, _info的 name自然指到同 04/08 11:45
stilltin:一塊, 有問題嗎 @@? 04/08 11:45
LPH66:你不要把 str 理解為"standard input" 04/08 11:59
LPH66:它不過是一個單純的字串空間而已 04/08 12:00
LPH66:應該這麼說 node->name=str; 給過去的不過是個指標而已 04/08 12:07
LPH66:並不是整個內容都給了過去 04/08 12:07