看板 EE_DSnP 關於我們 聯絡資訊
※ 引述《lionel20002 (~小遙~)》之銘言: : 寫這樣: : char *a="I You He She"; : char *i; : for(i=strtok(a," ");i!=NULL;i=strtok(NULL," ")) : cout<<i<<endl; : 程式會crash,為什麼? : 改成a[]就不會了... 啊, 問得很好, 這個問題希望大家能夠搞清楚... char *a = "...." 中 a is a local pointer variable, 他只佔了 stack memory 4 bytes, 而他所指的 string "..." 仍然是在 fixed memory 之中, 而 fixed memory 的內容是你不能隨意去更動的, 所以會 crash. 至於 char a[] = "..." 則是將 string "copy" 到 local char array 當中, 他所有 string 的記憶體都在 stack memory 裏了, 所以可以 strtok. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.121.134.54