/**
*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)
最新推荐文章于 2013-12-30 14:49:54 发布