關閉。這個問題需要細節或清晰。它目前不接受答案。
想改進這個問題?通過編輯此帖子添加詳細資訊并澄清問題。
11 小時前關閉。
改進這個問題double *tt;
tt = new double[2];
std::cout << tt[0] << std::endl;
std::cout << tt << std::endl;
結果是這樣的
-1.72723e-77
0x12e6062e0
這兩者有什么區別?不知道為什么這兩個值有不同的格式(tt[0]是X.~~但是tt沒有意義)
uj5u.com熱心網友回復:
tt[0]正在取消參考指向陣列的指標,tt結果是 type 的運算式double。它相當于*tt。該位置有一個隨機值,因此您會看到正在列印的隨機浮點值。
Buttt只是一個指標(型別為double*),因此當您列印它時,會顯示記憶體位置的地址(陣列第一個位元組的地址)。C 風格的陣列會自動衰減為指標。
uj5u.com熱心網友回復:
這兩者有什么區別?
一個是陣列中物件的值,另一個是陣列中物件的記憶體地址。
不知道為什么這兩個值有不同的格式
格式不同,因為這兩個值具有不同的型別。一個是 a double,另一個是指標 ( double*)。
PS 由于您沒有初始化陣列的元素,因此讀取該值會導致未定義的行為。這是一個錯誤。永遠不要那樣做。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/419337.html
標籤:
上一篇:在成員函式中呼叫解構式
下一篇:C 上二維向量的Argmax
