[問題] 迴圈裡面宣告的變數

看板C_and_CPP作者 (施抄)時間13年前 (2011/04/16 23:24), 編輯推噓5(5018)
留言23則, 8人參與, 最新討論串1/4 (看更多)
開發平台(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

04/16 23:26, , 1F
好奇~ 你為什麼想要位址不一樣呢? 想用指標指?
04/16 23:26, 1F

04/16 23:27, , 2F
因為每次都需要用到一個新的string來記錄東西.
04/16 23:27, 2F

04/16 23:28, , 3F
callac~~
04/16 23:28, 3F

04/16 23:29, , 4F
或是alloca也行.. 想請問有無不用到動態配置的方法XD
04/16 23:29, 4F

04/16 23:29, , 5F
那這些string之後還會用到嗎(非本次回圈內)??
04/16 23:29, 5F

04/16 23:29, , 6F
更正是calloc
04/16 23:29, 6F

04/16 23:43, , 7F

04/16 23:44, , 8F
你不用動態配置, 他遲早會炸
04/16 23:44, 8F

04/16 23:44, , 9F
回五樓 會用到... 所以才需要宣告新的, 無法回收.
04/16 23:44, 9F

04/16 23:46, , 10F
我目前是使用malloc解決這個需要 感謝loveme大的意見
04/16 23:46, 10F

04/16 23:52, , 11F
難不成你想這樣? http://codepad.org/7N07jgMU
04/16 23:52, 11F

04/16 23:59, , 12F
用指標會segment fault 用這不會~~
04/16 23:59, 12F

04/17 00:01, , 13F
樓上知道自己在寫什麼嗎...我無言了
04/17 00:01, 13F

04/17 00:03, , 14F
知道 屬於一種很黑的作法
04/17 00:03, 14F

04/17 00:04, , 15F
不用malloc就用vector,但原理還是做了malloc差不多的事
04/17 00:04, 15F

04/17 00:05, , 16F
不如詳述一遍作法是怎樣黑法, 不然恐會誤導他人...
04/17 00:05, 16F

04/17 00:05, , 17F
你怕malloc次數不固定,無法保留位址的話,可以用連結串列
04/17 00:05, 17F

04/17 00:05, , 18F
的概念,把新malloc出來的東西,連結到舊的去
04/17 00:05, 18F

04/17 00:07, , 19F
回原PO 變數的生命周期結束後 就讓它安息吧
04/17 00:07, 19F

04/17 00:07, , 20F
把它存的內容再挖起來用 是不可以的行為
04/17 00:07, 20F

04/17 00:44, , 21F
推link-list,不過firejox用的是甚麼方法??
04/17 00:44, 21F

04/17 23:17, , 22F
不定長度的二維陣列,不過原po不是說100個是舉例嘛..
04/17 23:17, 22F

04/18 11:02, , 23F
f大好黑
04/18 11:02, 23F
文章代碼(AID): #1DgRIdFR (C_and_CPP)
文章代碼(AID): #1DgRIdFR (C_and_CPP)