a) int a; 表示一個內存空間,這個空間用來存放一個整數(int);
b) int* a;表示一個內存空間,這個空間用來存放一個指針,這個指針指向一個存放整數的空間,即a)中提到的空間;
c) int** a;表示一個內存空間,這個空間用來存放一個指針,這個指針指向一個存放指針的空間,并且指向的這個空間中的指針,指向一個整數。也簡單的說,指向了一個b)中提到的空間;
動態申請二維數組:
//申請空間
? ? int** a2 = new int*[rows]; //開辟一塊內存用來存放 每一行的地址 int*,申請兩個int * 型的空間
? ? for(int i=0;i<rows;i++)
? ? ? ? a2[i] = new int[columns];? //再分別為每一行開辟內存
? ? //釋放空間
? ? for(int i=0;i<rows;i++)
? ? ? ? delete []a2[i];
? ? delete []a2;
————————————————
int?**swp;??????//動態申請二維數組?2行 10列??
swp=new?int*[2];??
for(int?i=0;i<2;i++)??
swp[i]=new?int[10];??
釋放內存:
for(int i=0,i<2,i++)
delete []a[i];
delete []a;
d) int (*a)[10];a是一個指針,這個指針指向一個長度為10、類型為int的數組;
如果有一個二維數組p[2][10], a = p; a++以后 指向p[1][0]
int (*a)[10] = new int[2][10];?
int a[m][n];
這代表了一個m行n列的二位數組。
或者是
int **p;
用指針定義一個二位數組。
還有
int (*p)[n];
這定義了一個未知行n列的二位數組。