關於指向陣列的指標

2021-06-21 14:56:16 字數 738 閱讀 4100

首先來個小例子:

#include int main()

; int (*p_array)[3];

p_array=&array ;

printf("p_array..%p\n",*p_array);

printf("p_array++..%p\n",*++p_array);

system("pause");

return 0;

}/*p_array是指向陣列元素為3的陣列的指標,由於在我的環境中,每個int是4個位元組,所以每次p_array加1之後,p_array中的內容是前進了1*12個位元組*/

輸出結果是:

因此:int array[3];

int (*p_array)[3]        ;/*p_array是指向int陣列(元素個數為3)的指標*/

p_array=&array;    /*陣列新增&,取得指向 陣列的指標*/

這樣賦值是沒有問題的,因為他們的型別的相同的。

可是如果進行:p_array=array;這樣的賦值,編譯器就會報出警告。

因為"指向int的指標"和「指向int的陣列(元素個數為3)的指標是完全不同的型別。

所以p_array加1,位址實際上前進了12個位元組。(我的機器乙個int型是4個位元組)。

關於陣列指標和指向陣列指標的指標及其new

後來在wp123456xt的csdn的博文上看到他的一篇求助文章 陣列指標問題 求指教 也無人回答,閒來無事,就一一解釋下吧,這些理解都屬於一家之見,也許其中的一些理解上會有問題,還希望大家指出,共同進步嘛。includeusing namespace std int main q new floa...

指向陣列的指標

陣列 array 是一系列具有相同型別的資料的集合,每乙份資料叫做陣列元素 element 陣列中的所有元素在記憶體中是連續排列的,整個陣列占用的是一塊記憶體。定義陣列時,要給出陣列名和陣列長度,陣列名可以認為是乙個指標,它指向陣列的第0個元素。在c語言中 我們將0個元素的位址稱為陣列的首位址。in...

指向陣列的指標

乙個陣列儲存在一塊連續記憶體單元中 陣列名就是這塊連續記憶體單元的首位址 第 i 1 個陣列元素的位址可表示為 data i 或 data i 可以通過以下方式為指向陣列的指標賦值 int a 10 pa a 0 或者pa a 乙個指標變數可以指向乙個陣列元素。int ptr,data 10 ptr...