陣列和指標

2021-09-12 17:34:28 字數 1608 閱讀 6698

一維陣列和指標

int array[3]

=printf

("&array:%p array:%p &array[0]:%p\n"

,&array, array,

&array[0]

);

&array表示的是整個陣列的位址,array表示陣列首位址,&array[0]第乙個元素位址。三者列印出來的值都是相同的,但是表示的空間不同,其中array和&array[0]代表的是同乙個空間,&array表示的是整個陣列的空間。

array +

1//指向第二個元素的位址,即array[1]的位址,即偏移sizeof(int)個位元組

&array +

1//向後偏移整個陣列的大小,即3 * sizeof(int)個位元組

int*p = array;

//p + 1 ---> &array[1] ---> array + 1 三者相同

//*(p + 1) ---> array[1] ---> *(array + 1) 三者相同

二維陣列和陣列指標

陣列指標本質上是指標,指標指向的元素是陣列。

/*array --> 代表第一行位址

array[0] --> 代表第一行第乙個元素位址

*(array + 1) == array[1] --> 代表第二行第乙個元素位址

array + 1 --> 代表第二行位址

array[1] + 1 --> 代表第二行第二個元素位址

&array --> 整個二維陣列位址

&array + 1 --> 偏移整個二維陣列大小*/

intmain

(int argc,

char

const

*ar**)

;int

(*p)[3

]= array;

printf

("%d\n"

, array[1]

[1])

;printf

("%d\n",*

((int*

)(array +1)

+1))

;printf

("%d\n",*

(array[1]

+1))

;printf

("%d\n",*

(p[1]+

1));

printf

("%d\n",*

(*(p +1)

+1))

;return0;

}

上面五個列印出來的結果都是5。p是乙個陣列指標,指向的元素是乙個擁有3個元素的一維陣列。p[1]就表示array的第二行的首位址,p[1] + 1也就表示為第二行第二個元素的位址,再提取指標對於空間的值即為5。p + 1表示將指標偏移到array第二行的首位址,* (p + 1)表示了第二行第乙個元素的位址,* (p + 1) + 1即表示第二行第二個元素的位址。

注意:* (p + 1)與p + 1所代表的空間是不同的,* (p + 1)代表乙個int的空間,p + 1代表整個陣列3個int的空間

陣列指標和指標陣列

陣列指標 也稱行指標 定義 int p n 優先順序高,首先說明p是乙個指標,指向乙個整型的一維陣列,這個一維陣列的長度是n,也可以說是p的步長。也就是說執行p 1時,p要跨過n個整型資料的長度。如要將二維陣列賦給一指標,應這樣賦值 int a 3 4 int p 4 該語句是定義乙個陣列指標,指向...

陣列指標和指標陣列

一 定義 陣列指標 陣列指標 是指向陣列 首元素的位址的 指標,其本質為指標 這個指標存放的是陣列首位址的位址,相當於2級指標,這個指標不可移動 指標陣列 陣列元素為指標的陣列,其本質為陣列。二 舉例 int a 3 4 這個無需多說,就是乙個 二維陣列 int p 4 就相當於int p 4 它就...

陣列指標和指標陣列

這兩個名字不同當然所代表的意思也就不同。我剛開始看到這就嚇到了,主要是中文太博大精深了,整這樣的簡稱太專業了,把人都繞暈了。從英文解釋或中文全稱看就比較容易理解。指標陣列 array of pointers,即用於儲存指標的陣列,也就是陣列元素都是指標 陣列指標 a pointer to an ar...