[問題] local變數和vector

看板C_and_CPP (C/C++)作者 (青)時間16年前 (2009/10/01 16:07), 編輯推噓2(201)
留言3則, 3人參與, 最新討論串1/1
敝人對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)

10/01 16:27, , 1F
就是你說的copy阿 你丟的是值不是位址 沒有local這問題
10/01 16:27, 1F

10/01 16:28, , 2F
yes, 就是copy的動作;若改成pointer應該就會當了
10/01 16:28, 2F

10/01 16:30, , 3F
原來如此,謝謝兩位的指點
10/01 16:30, 3F
文章代碼(AID): #1An6D0j1 (C_and_CPP)
文章代碼(AID): #1An6D0j1 (C_and_CPP)