有一個vector陣列v,已存放資料T
func1
{
func2(&v[0]); //1
//func2(&(v[0])); //2
}
func2(void* p)
{
T* var = (T*)p;//3
T var = *(T*)p;//4
T& var = *(T*)p;//5
}
在func1中把vector中的一個元素傳入func2,如果只傳一個元素,只呼叫一次func2,以上12,345任意組合都能在func2拿到資料
如果
func1
{
func2(&v[0]); //1
func2(&v[1]); //1
}
呼叫func2兩次傳入vector中兩個元素,func2中方式3,5只有最后一次呼叫能有資料,方式4個元素都能正常
如果
func1
{
func2(&(v[0])); //2
func2(&(v[1])); //2
}
func2中4,5都能正常訪問,3只有最后一次呼叫的能正常訪問
fun2是執行緒函式,同時執行
vector &取某元素的地址這樣用有什么問題?為什么第二次取元素地址后,第一次的元素指標就訪問不了了
兩個執行緒func2中的變數應該是互不影響的啊,為什么用指標就不行
uj5u.com熱心網友回復:
更正:方式5參考概率性正常訪問,實際還是不正常的就是vector對元素取地址,只有最后一次取地址能正常訪問到元素,為什么
uj5u.com熱心網友回復:
參考即別名uj5u.com熱心網友回復:
只參考vector中一個元素時是正常的,參考多個元素后,只有最后一次參考的元素能訪問,前面參考的都變成無效的了。用指標也一樣
uj5u.com熱心網友回復:
上傳能反映問題的最小的完整代碼轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/248218.html
標籤:C++ 語言
上一篇:關于Source Insight 4.0新建工程檔案夾名亂碼的的問題,求解決!
下一篇:媒體庫管理系統
