[問題] struct中的char *

看板C_and_CPP作者 (Arim5566)時間14年前 (2011/04/08 11:32), 編輯推噓3(303)
留言6則, 2人參與, 最新討論串1/1
最近遇到了這個問題 所幸網路上也有人討論了這問題(內有程式碼): 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

04/08 11:45, , 1F
從連結看起來是 str 都是同一塊, _info的 name自然指到同
04/08 11:45, 1F

04/08 11:45, , 2F
一塊, 有問題嗎 @@?
04/08 11:45, 2F

04/08 11:59, , 3F
你不要把 str 理解為"standard input"
04/08 11:59, 3F

04/08 12:00, , 4F
它不過是一個單純的字串空間而已
04/08 12:00, 4F

04/08 12:07, , 5F
應該這麼說 node->name=str; 給過去的不過是個指標而已
04/08 12:07, 5F

04/08 12:07, , 6F
並不是整個內容都給了過去
04/08 12:07, 6F
文章代碼(AID): #1Dde7LqL (C_and_CPP)