看板 C_and_CPP 關於我們 聯絡資訊
小弟遇到的問題:變數中還有變數 例如我宣告了五個變數: int i1, i2, i3, i4, i5; 請問有辦法寫一個迴圈設定這些變數嗎? 例如: for ( int j = 1; j <=5; j++ ) i$j = j; // i$j 表示 i1, i2,....,i5 類似這樣的方法 *這樣寫是錯的,只是舉例而已 j會隨著迴圈增加,就可以改變i1~i5的值。 我會用$是因為有些語言可以用$表示可變的變數, 印象中C/C++也有類似的方法,但是怎麼找都找不到。 所以想請問各位高手是否有這樣的方法呢? 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.25.172.11
james732:用迴圈代替吧,int i[5]; 10/01 16:05
james732: 陣列 10/01 16:05
mingco:請問有不用陣列的方法嗎? 謝謝! 10/01 16:12
freesamael:這種功能通常只出現在dynamic language, 10/01 16:24
freesamael:c/c++語言本身沒有這樣的表示法 10/01 16:25
james732:在C#/Java可以用reflactor來處理(?) 但C/C++... 10/01 16:26
james732:我想得到是用巨集硬湊 XDD 10/01 16:27
purpose:把i變成 class型態,再把*做overloading,則i*j=j應該有 10/01 16:36
purpose:機會吧???亂猜的 10/01 16:36
yauhh:你講的就是陣列,或者是struct或class 10/01 16:37
stupid0319:從沒想過的問題,或者是跟本用不到 10/01 16:48
loveflames:如果你是指用迴圈來更改變數名稱,C/C++做不到,你可以 10/01 16:51
loveflames:想想執行迴圈是在什麼時候 10/01 16:51
netsphere:要不然你也可以用指標阿 10/01 16:58
LPH66:我總覺得原 PO 是害怕拿 i[0] 這種東西當變數來運算.... 10/01 17:01
purpose:新手寫程式時常都這樣想過吧,以前教人寫程式 10/01 17:03
purpose:對方也是在那邊想要"變數名稱"可以是變數 10/01 17:03
loveme00835:std::map : 我要哭哭了..http://codepad.org/nwyEmHev 10/01 17:08
nowar100:在C++的世界裡面,不鼓勵這種Overload吧 10/01 17:13
loveme00835:沒錯, 因為語法很醜, 因為優先權的關係也可能不符使用 10/01 17:15
loveme00835:者所想像的, 重點是這裡是C/C++的世界, 你不照正統的 10/01 17:15
loveme00835:方式來作, 反而還想借用其他語言的特性, 本來就是旁 10/01 17:16
loveme00835:門左道的方法, 可以達成是沒錯, 不過要考慮到你因為這 10/01 17:16
loveme00835:樣的便利付出多少代價 10/01 17:16
purpose:還是艱苦、低階一點,用指標操作一下記憶體就好了 10/01 17:18
loveflames:那個是把i%j = j;換掉啊,這樣不如直接用i[j]算了 10/01 17:19
loveme00835:原po就是不想用 [], 請看 3 樓 10/01 17:20
stupid0319:不想用[]可以用指標吧 10/01 17:29
mingco:謝謝大家的回應!看來是我記錯了,原來C/C++沒有。 10/01 20:17
mingco:L大還把overload做出來的,真的很謝你的用心! 謝謝各位的 10/01 20:22
mingco:建議,我會改用指標或陣列來實做。因為我對C/C++還不熟,之 10/01 20:24
loveme00835:我只是把 p 大的猜想實現而已...囧 10/01 20:24
mingco:前用shell script又有用到這樣的用法,所以才很好奇C/C++是 10/01 20:25
mingco:否也可以這樣做。沒想到讓各位見笑了XD 真的很謝謝大家!! 10/01 20:27
idicivik:印象中有 ## 可以用 10/02 00:09
loveme00835:## 只能用在常數上 10/02 00:18
loveflames:變數名稱也可以 10/02 00:29
purpose:你寫 i##j 只會變成 ij 吧? 10/02 00:30
loveme00835:我是就這題來說 0.0 10/02 00:34
loveflames:啊,是我搞錯樓上意思了 10/02 00:36
yayarice:用#define的方式可以嗎? 10/02 01:45
yauhh:#define基本是把一些符號換成另一些符號,可以用函數呼叫格式 10/02 11:22
yauhh:但無法直接定 $X,而判定$是保留字,X要替換的符號 10/02 11:23
yauhh:而且編譯器甚至會認為#define的詞應該是識別字.. 10/02 11:28
yauhh:由此可見,對C/C++來說,做dialect是個難題. 10/02 11:47
mingco:我可以問一下#和##是什麼意思嗎? 除了前置處理就沒用過了 10/02 13:48