C 指標陣列,陣列指標,陣列名,二維陣列

2021-07-05 11:53:58 字數 3368 閱讀 5717

本文較為詳細的分析了關於理解c++指標陣列,陣列指標,陣列名,二維陣列的一些技巧。是比較重要的概念,相信對於大家的c++程式設計有一定的幫助作用。

一、關於陣列名

假設有陣列:?

1

inta[3] =

1.陣列名代表陣列第乙個元素的位址,注意,不是陣列位址(雖然值相等),是陣列第乙個元素位址,a 等同於 &a[0];

a+1是第二個元素的位址。比第乙個元素位址a(或者&a[0])超出了乙個整型指標的大小,在這裡是4個位元組(byte)?

1

cout << a << endl;//會輸出陣列第乙個元素位址。

2.取址符號&.

&a是陣列的位址,注意是陣列的位址,表示陣列這個整體的位址。不是陣列第乙個元素的位址(雖然他們的值相同)

&a+1比陣列的位址&a超出了乙個陣列的位址大小,在這裡是3*4個位元組

int * p = &a;這條語句是不成立的。左邊指標變數p時指向整型的指標,而右邊是陣列(型別是陣列)的位址,不是陣列元素(型別是整型)的位址,所以不能賦值。

應該賦值給陣列指標(下面會講到)。

關於陣列名,切記以上兩點。

二、關於指標陣列

1.定義

指標陣列,就是存放指標的陣列,陣列裡的元素是指標(對比於整型陣列,整型陣列就是存放整型的陣列,陣列裡的元素是整型)

int *ptr[3];如何理解?按照運算子優先順序,優先順序較大,所以ptr先與[3]結合,表示ptr是乙個陣列,必然要明確陣列的元素型別,所以陣列裡的元素型別是整型指標(int*),陣列的大小不一定需要(定義陣列時可以根據初始化的元素個數確定)

ptr[0]就是陣列的第零個元素,它是乙個整型指標。

示例如下:?

1

2

3

4

inta[3] = ;

intx = 5;

ptr[0] = &x;

ptr[1] = &a[2];

2.如何使用?

像一般指標一樣使用。*ptr[0]就是第零個元素(乙個指標)所指向元素的值,這裡是 5。

三、關於陣列指標

1.定義

陣列指標,就是指向陣列的指標,它是乙個指標,指向乙個陣列(對比於整型指標,就是指向整型的指標,它是乙個指標,指向乙個整型)

int (*ptr)[3]; 如何理解?先看小括號裡面,*ptr說明ptr是乙個指標,然後跟結合表明這個指標指向乙個陣列,陣列的元素是int?

1

2

inta[3] = ;

int(*ptr)[3] = a;//這條語句不成立。

右邊a是陣列名,還記得上面說的嗎,陣列名代表陣列第乙個元素的位址,就是&a[0],陣列名的型別相當於整型指標(不知道事實上是不是)int *,因為它指向了第乙個元素,第乙個元素是int

左邊ptr的型別是int(*),是陣列指標,指向陣列的指標,不是指向整型的指標,不能賦值。?

1

2

inta[3] = ;

int(*ptr)[3] = &a;//正確。

因為a是乙個陣列,&a就是陣列的位址,還記得上面說的嗎?

2.如何使用??

12

3

4

5

inta[3] = ;

int(*ptr)[3] = &a;

cout << (*ptr)[0] << endl;//輸出1

cout << (*ptr)[1] << endl;//輸出2

這裡有一點難以理解。不防對比一下一下**。?

1

2

3

4

inta[3] = ;

intx = 5;

int* p = &x;

cout << *p << endl;//輸出5

p是乙個指向整型的指標,*p就是所指向的變數(整型x)的值。同理ptr是指向陣列的指標,*ptr就是所指向的變數(陣列a)的值。(*ptr)[0]就是陣列的第零個元素。

四、關於二維陣列

1.二維陣列是乙個陣列,它的元素是一維陣列。謹記這一點,然後把上面的套進來就行了。?

1

inta[3][3] = , , };

陣列名

a是陣列第乙個(或者說第零個更好)元素的位址,第乙個元素是一維陣列,a[0] ------> 。a+1是第二個元素的位址,就是第二個一維陣列的位址,超出了3*4個位元組

&a是陣列的位址,&a+1 就是超出了乙個二維陣列的大小,超出了3 * 4 * 3 個位元組。

陣列指標?

1int(*ptr)[3] = a;//正確。

因為a表示第乙個元素的位址,第乙個元素是乙個一維陣列,所以a表示乙個一維陣列的位址,乙個陣列的位址賦值給陣列指標,成立。

五、總結:

1.陣列名表示陣列的第乙個元素的位址。

2.&a(a是乙個陣列)是陣列的位址。

3.指標陣列是乙個陣列,它的元素是指標。

4.陣列指標是乙個指標,它指向乙個陣列。

5.二維陣列的元素是一維陣列。

C 指標陣列 陣列指標 陣列名及二維陣列技巧彙總

一 關於陣列名 假設有陣列 1 inta 3 1.陣列名代表陣列第乙個元素的位址,注意,不是陣列位址 雖然值相等 是陣列第乙個元素位址,a 等同於 a 0 a 1是第二個元素的位址。比第乙個元素位址a 或者 a 0 超出了乙個整型指標的大小,在這裡是4個位元組 byte 1 cout a endl ...

C 指標陣列 陣列指標 陣列名及二維陣列技巧彙總

一 關於陣列名 假設有陣列 int a 3 1.陣列名代表陣列第乙個元素的位址,注意,不是陣列位址 雖然值相等 是陣列第乙個元素位址,a 等同於 a 0 a 1是第二個元素的位址。比第乙個元素位址a 或者 a 0 超出了乙個整型指標的大小,在這裡是4個位元組 byte cout a endl 會輸出...

二維陣列名 二維陣列名取位址 二級指標

先給出結論,便於以後查閱 首先給出幾個定義 typedef int p1x4 4 定義資料型別,p1x4這種型別為指向含4個int元素的1維陣列的指標 typedef int p3x4 3 4 定義資料型別,p3x4這種型別為指向含3x4個int元素的2維陣列的指標 下面從一維陣列說起 定義 int...