陣列指標和指標陣列的問題

2021-08-09 13:24:52 字數 864 閱讀 5754

陣列指標:

首先它是乙個指標,指向陣列。在32位系統中指標所佔記憶體永遠是4位元組(64位中是8位元組),但是指標所指向的陣列長度不確定。

定義方法:int (*p)[n];

p是乙個指標,指向乙個一維陣列,這裡n表示一維陣列的長度,也可以成為n的步長,即執行p+1時,p要跨過n個整型資料的長度。

int a[3][4];

int (*p)[4];

p = a;

p++;//執行之後p指向a[1]

因為p是乙個指標,直接使用陣列名是陣列的首位址,把陣列首位址賦給指標是合法的。

指標陣列

指標陣列是乙個陣列,這個陣列的元素都是指標。陣列佔多少個位元組由陣列本身決定,但是每乙個陣列元素都是乙個指標。

定義方法:int *p[n];

p是乙個有n個數的陣列,陣列裡元素的型別是 int*

如果int a[3][4]

這時p = a 是錯誤的,因為p是乙個陣列,不能把乙個陣列的位址賦給陣列。但是可以*p = a , *p表示陣列第乙個元素的值,可以給第乙個元素即乙個指標賦首位址。

int a[3][4];

int *p[3];

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

p[i] = a[i];

這裡int *p[3] 表示乙個一維陣列內存放著三個指標變數,分別是p[0]、p[1]、p[2],所以要分別賦值。

對於以上兩種陣列:

比如要表示陣列中i行j列乙個元素:

(p[i]+j)、((p+i)+j)、((p+i))[j]、p[i][j]

陣列指標和指標陣列

陣列指標 也稱行指標 定義 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...