作者godman362 (青)
看板C_and_CPP
標題[問題] local變數和vector
時間Thu Oct 1 16:07:26 2009
敝人對vector某地方有點疑問
一般來說,local variable在函數中執行完便會消失
假設有被assign給其他的變數,在跳出函數後進行存取會變成無用值
那麼我寫了像下面一段程式:
void Test()
{
int A = 100;
Object.push_back(A); //Object為global變數
}
int main()
{
Test();
cout <<Object.size() <<endl; //Result : 1
cout <<Object[0] <<endl; //Result : 100
return 0;
}
請問,為什麼vector中的內容物可以正確被讀取?
A這個int變數,不是為local variable嗎?
為什麼會在跳出函數之後,卻依舊可以被vector正常讀取?
還是說,push_back()這個動作,是複製一份同等的資料結構進去
所以不管是否為local variable,皆可正常存取
還請各位指點一下這個觀念,謝謝
--
ˍˍ
極目冷眼笑蒼雲 ▕寂寞▏
寂寞一生傲天穹 ▕侯印▏
 ̄ ̄
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.118.3.81
※ 編輯: godman362 來自: 122.118.3.81 (10/01 16:07)
推 QQ29:就是你說的copy阿 你丟的是值不是位址 沒有local這問題 10/01 16:27
推 redsox:yes, 就是copy的動作;若改成pointer應該就會當了 10/01 16:28
→ godman362:原來如此,謝謝兩位的指點 10/01 16:30