陣列指標詳解 C

2021-10-05 11:12:39 字數 1631 閱讀 5654

陣列指標的意思即為通過指標引用陣列,例如int (*p)[10],此時p是乙個指標變數,指向乙個陣列大小為10的陣列,所以int (*p)[10]即為乙個陣列指標。

由於運算子優先順序的優先順序大於*,若定義為int *p[10],此時該定義為乙個大小為10、用來存放指標的陣列。

首先,陣列名並不代表整個陣列,它只是代表陣列首元素的位址。當我們定義乙個陣列int arr[10]時,可以使指標變數指向陣列元素,陣列元素的指標就是陣列元素的位址。

1

int*p = arr;

2int

*p =

&arr[0]

;

易知,上面兩條語句的含義相同。

int arr[10]

=;int*p = arr,

*q =

&arr[5]

; printf (

"%d\n"

,*p)

; printf (

"%d %d\n"

,*p +1,

*p +2)

; printf (

"%d %d"

,*q -1,

*q -2)

;

執行結果猜測,定義int *p = arr,指向陣列首元素的位址,第一條printf語句執行應為0。第二條語句做指標加法,p指向首元素,*p + 1實現指向陣列下乙個元素,應為1,後同理應為2。第三條語句*q - 1實現直線陣列元素上乙個的功能,應為4,後同理應為3

執行結果

在二維陣列中,首元素位址並非單個元素,而是首行的位址。

下面我們列出相同位址的不同表示方式:

int a[10]

[10];

a //二維陣列名,指向a[0]a[0

],*(a+0)

,*a //0行0列元素位址a+1

,&a[1]

//第一行首位址a+1

,&a[1]

//a[1][0]的位址a[1

]+2,

*(a+1)

+2,&a[1]

[2]//a[1][2]的位址

*(a[1]

+2),

*(*(a+1)

+2), a[1]

[2]//a[1][2]的值

該陣列可以看成10個由10個元素構成的一維陣列,a即第0行首個元素的位址,a + 1即第二個一維陣列,即第一行的首個元素的位址;a[1] + 2首先指向第一行,即第二個一維陣列,再指向二維陣列首元素下乙個的下乙個的位址,*(a + 1) + 2&a[1][2]同理。

C 指標陣列與陣列指標詳解

首先先定義乙個指標陣列,既然是陣列,名字就叫arr char arr 4 arr就是我定義的乙個指標陣列,它有四個元素,每個元素是乙個char 型別的指標,這些指標存放著其對應字串的首位址。即 char arr 4 當乙個變數出現左右都出現乙個運算子時,沒有記住運算子優先順序的人就會糾結arr變數到...

C 陣列指標與指標陣列的詳解

在 c c 中,陣列與指標是既相互關聯又有區別的兩個概念。當我們宣告乙個陣列時,其陣列的名字也是乙個指標,該指標指向陣列的第乙個元素。陣列名的意義 sizeof 陣列名 這裡的陣列名表示整個陣列,計算的是整個陣列的大小。陣列名,這裡的陣列名表示整個陣列,取出的是整個陣列的位址。除此之外所有的陣列名都...

C語言 陣列指標詳解,區別於指標陣列。

題意 使用指標 p 和prt 表示a 1 2 include include include include using namespace std int main int prt 3 a 不等於 prt 4 意義不同,用法相同 int t 4 指標陣列,即宣告了4個指標,要for迴圈初始化分別指...