原创做品,转载请注明来源:http://www.cnblogs.com/shrimp-can/p/5149144.htmlhtml
1.数组的分配与释放数组
数组在内存中是连续存放的,开辟一块连续的内存空间;数组所占存储空间:sizeof(数组名),数组大小:sizeof(数组名)/sizeof(数据类型)。初始化字符数组时要注意字符串结尾处有结尾符‘\0’。 函数
char a[]={"Hello"};//按字符串初始化,大小为6.
char b[]={'H','e','l','l','o'};//按字符初始化(错误,输出时将会乱码,没有结束符)spa
char c[]={'H','e','l','l','o','\0'};//按字符初始化3d
2.指针的分配与释放:指针
指针是一种类型,包含其余变量的地址,也有的叫它“地址变量”。指针的类型是说明指针所指向的地址空间的类型。htm
申请、释放堆中的指针,使用new 和 delete,动态分配失败,返回一个空指针(NULL)对象
指向对象的指针:int *p=new int(0) ; delete p;(()里面的值是初始化值)blog
指向数组的指针:int *p=new int[n]; delete[] p;(n表示数组的大小,值没必要再编译时肯定,能够在运行时肯定)内存
指向类的指针:Class *p=new Class; delete p;(若构造函数有参数,则new Class后面有参数,不然调用默认构造函数,delete调用析构函数)
指针数组:一个数组里面存放的同类型的指针,如 int *a[10];须要对数组每一个元素初始化如:a[0]=new int [n];a[1]=new int [m];释放也要单独释放:delete a[0];delete a[1]
数组指针:指向数组的指针。1维:int *p=new int[10];delete []p; 2维:int (*p)[10]=new int[10][10];delete[] p; 3维:int(*p)[9][9]=new int [1][9][9];delete []p;
指针的指针:int **pp=new (int*)[2]; pp[0]=new int[3];pp[1]=new int[4];delete[] pp[0];delete[]pp[1]
程序验证:
参考:http://www.cnblogs.com/ForEverKissing/archive/2008/07/21/1247633.html
http://www.cnblogs.com/csyisong/archive/2010/03/18/1688877.html