敲**時候需要動態宣告乙個二維陣列,然後開始然,然不清,然後發現指標也然不清了...然後總結一些筆記關於陣列,指標,malloc,free。
//陣列與指標關係
int a;
int *p;
p=&a;
//malloc
int *p=(int *)malloc(sizeof(int ));
//free
free(p);
//陣列與指標關係
int a[n];
int *p;
p=a;
//malloc
int *p=(int *)malloc(sizeof(int )*n);
//free
free(p);
1.陣列指標
//陣列與指標關係
int a[n][m];
int (*p)[m]=a; //(*p)是乙個指標,型別是int(*)[m];即指向int型的長度為m的一維陣列,(因為之前a宣告的陣列大小是n*m,所以可以通過p++或p[n]來訪問不同行,這裡也可以看出一點二維陣列a在定義的時候的型別是int (*)型,這也許就是不能把乙個二維陣列賦給乙個二級指標的原因)
//malloc(這裡面用malloc 必須是要知道m(你知道我說的m特指什麼));
int (*p)[m]=(int (*)[m])malloc(sizeof(int)*n*m);
//free
free(p);
2.指標陣列
//陣列與指標關係
int a[n][m];
int *p[n];//p[n]是乙個陣列,什麼陣列呢,int *型;即乙個長度為n的一維陣列儲存的是int*型的指標。(這樣我們就可以把a[n]乙個乙個賦值給p[n])
for(i=0;i//malloc(這裡的malloc需要知道n,you know that)
int *p[n];
for(i=0;iint *)malloc(sizeof(int )*m);
//free(這裡p是乙個陣列不用free,需要free掉的是陣列儲存的指標指向的的空間)
for(i=0;i;
//陣列與指標關係
int a[n][m];
int **p;
p=a;//哈哈,你會發現他會說型別不符,至於為什麼上面說了
p=&a;//哈哈,你會發現他還是會說型別不符,至於為什麼和剛剛一樣
//malloc(這裡malloc和指標陣列類似,相當於是找了乙個二級指標去指向那個指標陣列)
int **p;
p=(int **)malloc(sizeof(int *)*n);
for(i=0;iint *)malloc(sizeof(int )*m);
//free(這裡要先將一級指標釋放,然後講二級指標釋放)
for(i=0;ifree(p[i]);
free(p);
指標陣列和陣列指標之間關係
指標陣列 首先它是乙個陣列,陣列的元素都是指標,陣列佔多少個位元組由陣列本身決定。它是 儲存指標的陣列 的簡稱。陣列指標 首先它是乙個指標,它指向乙個陣列。在32 位系統下永遠是佔4 個位元組,至於它指向的陣列佔多少位元組,不知道。它是 指向陣列的指標 的簡稱。1 int ptr1 10 2 int...
指標與陣列,指標與函式之間的關係
指標陣列,它的關鍵在於是乙個陣列,即陣列中每個元素都是指標。陣列指標,他的關鍵在於是指標變數,即這個指標指向乙個陣列。include int main 這是乙個陣列,大家都知道。int parr1 4 這是指標陣列,首先的優先順序比 的優先順序高,所以parr 先與結合,它是乙個陣列,然後再與 結合...
指標與陣列之間的關係與轉換
一 指向指標的指標 1 指向指標的指標的定義 p p 變數的位址上的數值的位址 2 指標型別要和你指向的資料或者指標型別要一致 3 指標與一維陣列的取值 a i a i a i p i p i a i a i a代表的是陣列的變數名,i是代表陣列a裡面的第i個元素 是指求括號 a i 的位址 voi...