數組與指針的區別


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM