分配一維動態數組or 二維動態數組的方法以及學習 new 方法or vector
阿新 • • 發佈:2017-10-06
bsp 不能 存儲空間 hot i++ num 數組 stream span
先來個開胃菜
1 // 使用new動態分配存儲空間 2 3 #include<iostream> 4 using std::cout; 5 6 int main() 7 { 8 // 第1種方式 9 int *a=new int; 10 *a=1; 11 cout<<"使用第一種方式進行動態分配存儲空間的結果為:\n" 12 <<"*a= "<<*a<<std::endl; 13 delete a; // 釋放動態存儲空間 14 // 第2種方式 15 int *b=new int(2); 16 cout<<"使用第一種方式進行動態分配存儲空間的結果為:\n" 17 <<"*b= "<<*b<<std::endl; 18 delete b; // 釋放動態存儲空間 19 // 第3種方式 20 int *c; 21 c=new int(3); 22 cout<<"使用第一種方式進行動態分配存儲空間的結果為:\n" 23 <<"*c= "<<*c<<std::endl; 24 delete c; // 釋放動態存儲空間 25 26 // 動態創建數組 27 float *d=new float [3];//區別 1 new 類型()和 2 new 類型[數量]
//一個是通過構造函數創建一個對象
// 一個是創建動態數組但是沒有初始化 如果是內置類型會有默認的構造函數
//大多數需要再次分別構造初始化28 d[0]=3; 29 d[1]=6; 30 d[2]=8; 31 cout<<"d[0]= "<<d[0]<<std::endl; 32 d=d+1; //數組名和指針之間的根本區別 33 cout<<"d[0]= "<<d[0]<<std::endl; 34 d=d-1; 35 cout<<"d[0]= "<<d[0]<<std::endl; 36 delete [] d; // 釋放動態存儲空間 37 return 0; 38 }
使用第一種方式進行動態分配存儲空間的結果為:
*a= 1
使用第一種方式進行動態分配存儲空間的結果為:
*b= 2
使用第一種方式進行動態分配存儲空間的結果為:
*c= 3
d[0]= 3
d[0]= 6
d[0]= 3
以上為執行結果 自己想啊!!!!
new一個指針數組
對於類A的指針,可以這樣寫,不僅僅new,還調用了A的構造函數。
A *P = new A();
但是對於new 一個指針數組,我們可以這麽寫:
A **P = new A *[10];//這裏是創建了10個A類型的指針 返回的是指針的地址
但是我們還沒有進行構造呢?//這裏不能忘記了構造啊!!!!
for(int i=0; i<10; i++)
{
p[i] = new A();
}
還有一個問題就是釋放:
for(int i=0; i<10; i++)
{
delete p[i];//為什麽不是delete[]p[i]
}
delete [] p;
—————————————————————————————————————————
分配一維動態數組or 二維動態數組的方法以及學習 new 方法or vector