C 多維陣列和指標

2021-08-20 05:37:59 字數 2576 閱讀 7113

用指標變數可以指向一維陣列中的元素,也可以指向多維陣列中的元素。

先回顧一下多維陣列的性質,可以認為二維陣列是「陣列的陣列」,例 :

定義int a[3][4]=,{9,11,13,15},{17,19,21,23}};

則二維陣列a是由3個一維陣列所組成的。設二維陣列的首行的首位址為2000

則有……

第一行位址a[0]

2000a[0][0]2004a[0][1]2008a[0][2]2012a[0][3]

存放資料13

57第二行位址a[1]2016a[1][0]2020a[1][1]2024a[1][2]2028a[1][3]

存放資料911

1315

第三行位址a[2]

2032a[2][0]2036a[2][1]2040a[2][2]2044a[2][3]

存放資料

1719

2123

表 示 形 式

含義地 址

a二維陣列名,指向一維陣列a[0],即0行首位址

2000

a[0], *(a+0), *a

0行0列元素位址

2000

a+1,&a[1]1行首位址

2016

a[1],*(a+1)1行0列元素a[1][0]的位址

2016

a[1]+2,*(a+1)+2,&a[1][2]1行2列元素a[1][2]的位址

2024

*(a[1]+2),*(*(a+1)+2),a[1][2]1行2列元素a[1][2]的值

元素值為13

/**

* 一維陣列裡面存放的是二維陣列的位址

* 二維陣列才是真正存放的是數值

*/a[i][j] = *(*(a+i)+j)

a[i][j]...[z]=*(*(...*(a+i)+j)...+z)

#include 

void main()

; printf("a: %d\n", a);

printf("*a: %d\n", *a);

printf("a[0]: %d\n", a[0]);

printf("&a[0]: %d\n", &a[0]);

printf("&a[0][0]: %d\n", &a[0][0]);

printf("a+1: %d\n", a+1);

printf("*(a+1): %d\n", *(a+1));

printf("a[1]: %d\n", a[1]);

printf("&a[1]: %d\n", &a[1]);

printf("&a[1][0]: %d\n", &a[1][0]);

printf("a+2: %d\n", a+2);

printf("*(a+2): %d\n", *(a+2));

printf("a[2]: %d\n", a[2]);

printf("&a[2]: %d\n", &a[2]);

printf("&a[2][0]: %d\n", &a[2][0]);

printf("a[1]+1: %d\n", a[1]+1);

printf("*(a+1)+1: %d\n", *(a+1)+1);

printf("*(a[1]+1): %d\n", *(a[1]+1));

printf("*(*(a+1)+1): %d\n", *(*(a+1)+1));

}

把二維陣列a分解為一維陣列a[0],a[1],a[2]之後,設p為指向二維陣列的指標變數。可定義為:

​ int (*p)[4]

它表示p是乙個指標變數,它指向包含4個元素的一維陣列。若指向第乙個一維陣列a[0],其值等於a,a[0],&a[0][0]『等。而p+i則指向一維陣列a[i]。

二維陣列的指標變數說明的一般形式為:

型別說明符 (*指標變數名)[長度]

其中「型別說明符」為所指陣列的資料型別*表示其後的變數是指標型別。「長度」表示二維陣列分解為多個一維陣列時,一維陣列的長度,也就是二維陣列的列數。

#include 

void main()

; int (*p)[4];

int i, j;

p = a;

for( i=0; i < 3; i++)

printf("\n");

}}

多維陣列和多維指標

指向指標的指標 指標變數在記憶體中會占用一定的空間 可以定義指標來儲存指標變數的位址 int pp本質上還是指標,只是兩個 告訴你這是乙個指向指標的指標char p null char p2 p p2 給p賦值沒有問題,但怎麼使用p 呢?這就需要我們前面多次提到的鑰匙 第一步 根據 p 這個變數,取...

多維陣列 和 多維指標

指標變數在記憶體中會占用一定的空間。可以定義指標來儲存指標變數的位址值。舉例 舉例說明,多級指標的使用,重置動態空間大小 include include int reset char p,int size,int new size else return ret int main return 0 ...

多維陣列和多維指標

專題四 指標和陣列 下 包括以下章節 指標變數在記憶體中會占用一定的空間可以定義指標來儲存指標變數的位址值為什麼需要指向指標的指標?指標在本質上也是變數 對於指標也同樣存在傳值呼叫與傳址呼叫 2 1.c include include char p p指向的是乙個char 指標 int size 原...