看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) gcc version 4.5.2 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): for(i=0; i<100; i++){ char str[100]; printf("str = %p\n", str); ... } 在這100次的迴圈中, 我需要每次都有一個新的array, 所以在迴圈中宣告變數, 希望每次都是不同的address. 可是output顯示, 這些str的都是同一個, 請問有無辦法讓每次迴圈中的str都是不同的值(address). 我知道使用malloc可以達到這個效果, 請問有無不用malloc的辦法? 另外這個100是舉例, 事實上我並不知道我總共會須要用幾個str, 所以無法事先宣告. 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.46
loveme00835:好奇~ 你為什麼想要位址不一樣呢? 想用指標指? 04/16 23:26
robertshih:因為每次都需要用到一個新的string來記錄東西. 04/16 23:27
firejox:callac~~ 04/16 23:28
robertshih:或是alloca也行.. 想請問有無不用到動態配置的方法XD 04/16 23:29
OppOops:那這些string之後還會用到嗎(非本次回圈內)?? 04/16 23:29
firejox:更正是calloc 04/16 23:29
loveme00835:http://codepad.org/9BWoie1p 04/16 23:43
loveme00835:你不用動態配置, 他遲早會炸 04/16 23:44
robertshih:回五樓 會用到... 所以才需要宣告新的, 無法回收. 04/16 23:44
robertshih:我目前是使用malloc解決這個需要 感謝loveme大的意見 04/16 23:46
firejox:難不成你想這樣? http://codepad.org/7N07jgMU 04/16 23:52
firejox:用指標會segment fault 用這不會~~ 04/16 23:59
loveme00835:樓上知道自己在寫什麼嗎...我無言了 04/17 00:01
firejox:知道 屬於一種很黑的作法 04/17 00:03
purpose:不用malloc就用vector,但原理還是做了malloc差不多的事 04/17 00:04
loveme00835:不如詳述一遍作法是怎樣黑法, 不然恐會誤導他人... 04/17 00:05
purpose:你怕malloc次數不固定,無法保留位址的話,可以用連結串列 04/17 00:05
purpose:的概念,把新malloc出來的東西,連結到舊的去 04/17 00:05
kaomark:回原PO 變數的生命周期結束後 就讓它安息吧 04/17 00:07
kaomark:把它存的內容再挖起來用 是不可以的行為 04/17 00:07
OppOops:推link-list,不過firejox用的是甚麼方法?? 04/17 00:44
alongalone:不定長度的二維陣列,不過原po不是說100個是舉例嘛.. 04/17 23:17
xatier:f大好黑 04/18 11:02