C++結構體宣告變數時自動分配了記憶體嗎?還有new是指標專用的嗎?
uj5u.com熱心網友回復:
宣告結構體變數是分配了記憶體的,宣告了結構體指標變數只是指標變數本身占據的記憶體(4位元組),當指標變數=new 結構體的時候才分配了結構體記憶體。uj5u.com熱心網友回復:
那么在使用結構體變數時(不用指標),還需要new嗎,new了的話又起到什么作用呢?在類當中使用指標也是需要new的嗎?uj5u.com熱心網友回復:
new是什么的話,好吧,你應該看看任何一本C++的教材。uj5u.com熱心網友回復:
我的意思是 既然宣告結構體變數時已經分配了記憶體空間,那么,還用new就沒有意義了?uj5u.com熱心網友回復:
struct Person{
int no;
char sex;
char name[20];
};
Person p1; //宣告結構體變數是分配了記憶體的
p1.no=1001; //p1直接使用,不需要也不能p1=new Person (錯誤)
Person *p2; //宣告了結構體指標變數只是指標變數p2本身占據的記憶體(4位元組)
p2=new Person; //這個時候才分配了結構體記憶體(20幾個位元組),并將這塊記憶體首地址賦給指標變數p2
p2->no=1002;
uj5u.com熱心網友回復:
指標變數p2本身占據的記憶體(4位元組)就是用來存盤由new分配的記憶體塊的首地址的。uj5u.com熱心網友回復:
哦哦!太厲害了!!謝謝uj5u.com熱心網友回復:
C++的資料有,堆,堆疊,和靜態資料區..........區域變數用的是堆疊,如在代碼中定義int i;有些是堆如用malloc或new出來的,用static或定義在函式外cpp檔案中,則是靜態資料區轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/81011.html
標籤:基礎類
上一篇:求大神告訴我哪里錯了??
下一篇:怎樣把int型轉為uint型別
