1.棧的記憶體都有有限的,但是堆得記憶體很大,為避免棧的記憶體開銷,我們都把整個物件都存放在
堆中,那麼在堆中區宣告乙個物件方法是:
area *one=new area;
new: 操作符,它用來生成某種型別的乙個物件,通常這個物件在堆中生成。
* one:宣告了乙個指向堆中的新物件的指標one。
area:(new後面的)代表在堆中建立的屬於類area的物件。
因為堆中所有成員都是匿名的,因此它沒有名字,不能按名字訪問,只能通過指標(one)訪問。
2.刪除堆中的陣列:
只需要刪除delete即可,然後後面加上陣列名就可以,
比如:我們要刪除陣列one,那麼就是:deleteone;
注意: 1. 如果忘記輸入;那麼刪除的只是one[0];改錯誤帶來的後果就是記憶體洩露。
2. 即使是指標也不能越界運算元組。
3.容易混淆的概念:
a. area one[10000] :宣告乙個由10000個area物件組成的陣列,陣列名字叫one。
b. area *one[10000] :宣告乙個由10000個指向area的指標組成的陣列,陣列名字為one。
c. area *one=new area[10000]:該指標指向由1000個area物件組成的乙個陣列。
c方式的one是乙個指向陣列的指標,也就是說one儲存的是陣列第乙個元素的位址。
例項1.b方式:
#include
using namespace std;
class area
例項2 c方式:
#include
using namespace std;
class area
{public:
// area(int i, int w){length=i, width=w; cout<<"呼叫建構函式設定長和寬的值" 這是最有可能的,讀者有可能不理解本章內容直到學相關c 指標的章節學習。因此,假如有c 指標位的理解,那麼陣列名是乙個常量指標陣列的第乙個元素。因此,在宣告 double balance 50 double p double balance 10 p balance 它是合法的使用陣列名作為常量指標,... 指標陣列 是乙個陣列,陣列元素為指標 陣列指標 是乙個指標,指向陣列的指標 例如 int p1 5 int p2 5 對於語句int p1 5 因為 的優先順序要比 要高,所以 p1 先與 結合,構成乙個陣列的定義,陣列名為 p1,而 int 修飾的是陣列的內容,即陣列的每個元素。也就是說,該陣列包... char p 10 為陣列指標,實際上相當於二維陣列,也就是指向乙個一維陣列的指標 p可以單獨看做指向陣列的指標 比如這樣 int b 2 int cc 2 2 1,2 3,4b cc b cout 這樣的賦值是可以的,b指向的陣列的大小一定要和cc的第一維陣列大小一致,這裡輸出,4,因為b 這個時...c 學習筆記 六 陣列指標
C語言學習筆記 指標 指標陣列與陣列指標
C 筆記 C 陣列指標和指標陣列