指向指標的指標
指標的本質是變數
指標會占用一定的記憶體空間
可以定義指標的指標來儲存指標變數的位址值。
int main()
為什麼需要指向指標的指標?
指標在本質上也是變數
對於指標也同樣存在傳值呼叫和傳址呼叫。
#include #include #include int reset(char**p, int size, int new_size)
printf("\n"); }
printf("\n");
printfarray(p, 9);
return 0;
}
編譯執行:
~/will$ ./a.out
0 1 2
3 4 5
6 7 8
printfarray 4
0 1 2 3 4 5 6 7 8
一維陣列名代表陣列首元素的位址
int a[5] a的型別為int*
二位陣列名同樣代表陣列首元素的位址
int m[2][5] m的型別為 int(*)[5]
二維陣列的型別也決定了二維陣列必須確定第二個引數,因為只有這樣才可以確定二維陣列的型別。
結論:1、二維陣列名可以看做是指向陣列的常量指標
2、二維陣列可以看做是一維陣列
3、二維陣列中的每個元素都是同型別的一維陣列
malloc()並不能保證申請的記憶體中的所有值都為0。
動態申請二維陣列:
#include #include int** malloc2d(int row, int col)
{ int** ret = null;
if((row > 0) && (col > 0))
{ ret = (int**)malloc(row * sizeof(int*)); //二維陣列以一維的方式進行空間排布
int* p = null;
p = (int*)malloc(row * col * sizeof(int)); //注意此處申請的空間大小
if( (ret != null) && (p != null))
{ int i=0;
for(i=0; i編譯執行:
~/will$ gcc test.c
~/will$ ./a.out
0, 0, 0,
0, 0, 0,
0, 0, 0,
小結:c語言中只支援一維陣列;
c語言中的陣列大小必須在編譯期就作為常數確定;
c語言中的陣列元素可是任何型別的資料;
c語言中的陣列的元素可以是另乙個陣列。
C 34 多維陣列和多維指標
void code include include int reset char p,int size,int new size printf n printf n printarray p,9 return 0 輸出 0,1,2,3,4,5,6,7,8,printfarray 401 234567...
c語言深度剖析 34 多維陣列和多級指標
1.指向指標的指標 int main 2.問題3.程式設計實驗 include include int reset char p,int size,int new size free p 釋放原來申請的空間 p pt 指標指向新的記憶體空間 else return ret int main free...
C語言中指標和多維陣列
陣列是乙個特殊的指標,多維陣列也是更為複雜的陣列,它們的關係是什麼樣的呢?我們通過乙個簡單的例子來比較形象的了解指標和多維陣列 int a 2 3 這是乙個2 3的二維陣列,首先我們清楚陣列名就是指向陣列首元素的常量指標 它不可以指向其他部分,可以對指向的元素進行任意修改 其次c語言中所謂的多維陣列...