[語法] enum 指標

看板C_and_CPP (C/C++)作者 (楊伯)時間16年前 (2010/04/24 16:54), 編輯推噓3(305)
留言8則, 2人參與, 最新討論串1/1
今天在做bitset的練習,但是發生一些問題,請板上前輩指點一下@@ 先提供我的code enum OffSet { OFFSET_0 , OFFSET_1 , OFFSET_2 , OFFSET_3 , OFFSET_MAX }; void BitSet(char* i_BitArray, OffSet* i_offset) { *i_BitArray |= 0x01 << *i_offset; } void main() { char* BitArray; BitArray = new char[ OFFSET_MAX ]; for( int i=0; i<OFFSET_MAX ; ++i) BitArray[i] = 0; BitSet( BitArray , (OffSet*)OFFSET_3); } 上面的code可以編譯成功,但是執行中會當掉,中斷點是在BitSet()裡面那行, 可是我如果把傳入的第二個引數改成OffSet而不要用指標的話就可以正常執行, 想請問這是什麼原因? 另外再請教一下,我覺得我的初始化方法並不是很好,如果陣列長度一長,應該 會花不少時間,不知道動態陣列new的時候能不能夠給初始化的值? 感謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.128.56 ※ 編輯: yan04870449 來自: 122.117.128.56 (04/24 16:55)

04/24 17:06, , 1F
指標內容 = 記憶體位址, 他不僅僅是一串數字而已, 你
04/24 17:06, 1F

04/24 17:07, , 2F
給的數值必須是「l-value」的記憶體位址, OFFSET_3是
04/24 17:07, 2F

04/24 17:07, , 3F
常數, 只能當「r-value」來用, 他不佔記憶體空間
04/24 17:07, 3F

04/24 17:12, , 4F
OffSet offset = OFFSET_3;
04/24 17:12, 4F

04/24 17:12, , 5F
BitSet( BitArray , &offset);
04/24 17:12, 5F

04/24 17:22, , 6F
搞定@@感謝樓上大大。
04/24 17:22, 6F

04/24 17:23, , 7F
初始化的部份, 跑個迴圈也不會花很久時間, 不然你可以
04/24 17:23, 7F

04/24 17:24, , 8F
用STL 的 fill 來解決
04/24 17:24, 8F
文章代碼(AID): #1Bqh7PPc (C_and_CPP)
文章代碼(AID): #1Bqh7PPc (C_and_CPP)