作者rf0914 (<-使用者代號)
看板EE_DSnP
標題Re: [問題] pushFront()
時間Tue Nov 15 15:03:56 2011
為了測試對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)