看板 EE_DSnP 關於我們 聯絡資訊
為了測試對pushFront()、popFront()、getNext()的理解 我寫了一個簡單的測試檔 我在想如果這三個函數的內容寫的是正確的話 那這個檔案應該要能跑才對 (言下之意就是我現在跑不動,編譯過了但執行時錯誤,正不知該如何是好 QQ) #include <iostream> using namespace std; int * _first; template <class T> T* getNext(T* p) {...} template <class T> T* popFront() {...} template <class T> void pushFront(T* p) {...} int main(void) { int a[10] = {1,2,3,4,5,6,7,8,9,10}; int *p[10]; for(int i=0; i<10; i++){p[i]=&a[i];} _first=p[2]; pushFront<int>(p[1]); pushFront<int>(p[0]); int *pt = popFront<int>(); int *pf = popFront<int>(); return 0; } 理論上在執行完 int *pt = popFront<int>(); 之後 我的pt應該是個與p[0]指向相同位置的指標,(且該位置上的值是0) 執行完 int *pf = popFront<int>(); 之後 我的pf應該是個與p[1]指向相同位置的指標,(且該位置上的值是0) 這樣的理解是錯的嗎?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.243.229 ※ 編輯: rf0914 來自: 140.112.243.229 (11/15 15:04) ※ 編輯: rf0914 來自: 140.112.243.229 (11/15 15:04)
vuluy:這種方法得不到原本的值的,因為push之後內容就會被覆蓋掉 11/15 15:39
vuluy:而且如果int比SIZE_T小,內容會重覆到 11/15 15:40
rf0914:我在pop裡面有寫個讓內容等於0的 11/15 15:43
rf0914:我現在反正只是要測試函數有沒有正常運作而已,所以在32位 11/15 15:43
rf0914:元的機器上int跟SIZE_T反正一樣大所以應該是沒關係吧? 11/15 15:44
rf0914:我比較想知道的是我的理解到底有沒有錯誤... 11/15 15:44
rf0914:因為現在compile都過了但我用ddd去看地址根本就沒有寫上去 11/15 15:45
wmin0:理解應該沒錯@@ 11/15 16:39
ric2k1:cout 看看 p[0], p[1], p[2] 的值,以及在 pushFront() 跟 11/15 21:12
ric2k1:popFront() 的前面跟後面把 _first 印出來看看?y 11/15 21:13
rf0914:總算完成這部份了~ 感謝樓上兩位還有教授! 11/16 21:48
※ 編輯: rf0914 來自: 140.112.243.229 (11/16 21:49)