原創做品,轉載請註明來源: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