C語言高階 第34課 多維陣列和多維指標(難點)

2021-08-20 04:21:30 字數 1577 閱讀 8688

指向指標的指標

指標的本質是變數

指標會占用一定的記憶體空間

可以定義指標的指標來儲存指標變數的位址值

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語言中所謂的多維陣列...