當前位置:編程學習大全網 - 網站源碼 - vs自動窗口顯示:&vec 0x0017f798 [10](0,0,0,0,0,0,0,0,0,0);0x0017f798是什麽地址?代碼如下:

vs自動窗口顯示:&vec 0x0017f798 [10](0,0,0,0,0,0,0,0,0,0);0x0017f798是什麽地址?代碼如下:

vector內部是以指向堆空間的指針來實現數組的

vector<int> vec(10); //vec本身在棧空間,內部指針指向壹個堆空間,大小是40個字節

cout<<&vec[0]<<endl; //這個顯示的就是上面剛分配堆空間的首地址,這個是由重載後的operator[]辦到的

vec.reserve (20); //重新分配空間

cout<<&vec[0]<<endl; //顯示的是重新分配後的堆空間的首地址,80字節

而0x0017f798是vec本身的地址,這是個棧地址,也可以輸出

cout<<&vec<<endl; //這個輸出的就是自動窗口看見的&vec 地址數值

就像下面這段代碼

int * p=new int[10]; //壹個棧空間的指針指向壹個堆空間

cout<<&p[0]<<endl; //輸出這個堆空間的首地址

delete[] p; //釋放

p=new int[20]; //重新分配

cout<<&p[0]<<endl; //輸出重新分配的空間的首地址

cout<<&p<<endl; // 輸出p本身的地址,自動窗口的&p就是這個而不是&p[0]

  • 上一篇:用C++如何讀取圖片
  • 下一篇:如何在項目中呼叫fastdds的訂戶
  • copyright 2024編程學習大全網