1. 程式人生 > >分配一維動態數組or 二維動態數組的方法以及學習 new 方法or vector

分配一維動態數組or 二維動態數組的方法以及學習 new 方法or vector

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