作者Arim (Arim5566)
看板C_and_CPP
標題[問題] struct中的char *
時間Fri Apr 8 11:32:32 2011
最近遇到了這個問題
所幸網路上也有人討論了這問題(內有程式碼):
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