原創作品,轉載請注明來源:http://www.cnblogs.com/shrimp-can/p/5149144.html
1.數組的分配與釋放
數組在內存中是連續存放的,開辟一塊連續的內存空間;數組所占存儲空間:sizeof(數組名),數組大小:sizeof(數組名)/sizeof(數據類型)。初始化字符數組時要注意字符串結尾處有結尾符‘\0’。
char a[]={"Hello"};//按字符串初始化,大小為6.
char b[]={'H','e','l','l','o'};//按字符初始化(錯誤,輸出時將會亂碼,沒有結束符)
char c[]={'H','e','l','l','o','\0'};//按字符初始化
2.指針的分配與釋放:
指針是一種類型,包含其他變量的地址,也有的叫它“地址變量”。指針的類型是說明指針所指向的地址空間的類型。
申請、釋放堆中的指針,使用new 和 delete,動態分配失敗,返回一個空指針(NULL)
指向對象的指針:int *p=new int(0) ; delete p;(()里面的值是初始化值)
指向數組的指針: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