/**
*cppTest-3.0:指針相關-3(new&delete)
*
*author 煒sama
*/
#include<iostream.h>
void main()
{
int *pi;
pi=new int;
*pi=888;
cout<<*pi<<endl;
delete pi;
int *pi2=new int(123);
cout<<*pi2<<endl;
delete pi2;
int *pis=new int[2];
pis[0]=0;
pis[1]=1;
cout<<pis[0]<<endl;
cout<<pis[1]<<endl;
*pis=100;
*(pis+1)=200;
cout<<pis[0]<<endl;
cout<<pis[1]<<endl;
cout<<*(pis+1)<<endl;
//cout<<pis<<endl;
delete []pis;//[]是必須的!它告訴編譯器pis指向的是數組而不是單個對象。
//delete pis;//這種釋放方式是錯的!即使運行時沒錯,但是有可能無法釋放pis指向的空間!
//delete pis[];//這種釋放方式是錯的!
//不能在new的同時給數組初始化!
//int *pis2=new{1,2};
//int *pis3=new int{1,2};
//int *pis4=new int[]{1,2};
//int *pis4=new int[2]{1,2};
int is[2]={1,2};
/*int *pis2=new int[];//雖然不指定數組大小沒有編譯報錯,但是運行時報錯,故不建議這麼做!
pis2[0]=0;
pis2[1]=1;
cout<<pis2[0]<<endl;
cout<<pis2[1]<<endl;
delete []pis2;*/
//new多維數組時,左值一定要指定每一維大小,並且右值至多最高維可以不指定大小。不然編譯報錯!
//int (*piss0)[]=new int[][];//報錯!
//int (*piss1)[]=new int[][2];//報錯!
//int (*piss2)[]=new int[2][];//報錯!
//int (*piss3)[]=new int[2][2];//報錯!
//int (*piss4)[2]=new int[][];//報錯!
int (*piss5)[2]=new int[][2];
//int (*piss6)[2]=new int[2][];//報錯!
int (*piss7)[2]=new int[2][2];
int (*pisss)[2][2]=new int[][2][2];
//delete [][]pisss;//錯誤!!!
delete []pisss;
int i=2,j=2,k=2;
int (*pisss2)[2][2]=new int[i][2][2];//只有第一維可以是變量表達式!!
//int (*pisss3)[2][2]=new int[i][j][2];//錯誤!
//int (*pisss4)[2][2]=new int[i][j][k];//錯誤!
//const int *pci=new const int(128);
}
cppTest-3.0:指針相關-3(new&delete)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.