int p 4 和int p 4 的區別

2021-09-03 07:40:17 字數 409 閱讀 6371

int*p[4]因為 [ ] 比 * 的優先順序高,所以p先於[ ]結合,是乙個陣列,然後再與*結合,所以這個陣列跑p[4]的型別是int *,就是指向int的指標,就是「元素是指向整形資料的指標的陣列」。每個元素都是乙個指標,一共有4個元素。指標就是位址本身,而指標變數是用來存放位址的變數。

而int(*p)[4],p先和*結合,意味著p是乙個指標,他指向int [10],即p是乙個指向乙個陣列的指標,

比如a[4][10],它包括a[0][10],a[1][10],a[2][10],a[3][10],a[0],a[1],a[2],a[3],可以表示成a[i]==*(a+i);所以(*p)[10],p可以等於a+i,p是指向大小為10的陣列,p的增一減一是以一行為單位的(比如4行10列)。

實際int(*p)[4]就是乙個二維陣列,代表n行4列的陣列,

C 中int p和int p的區別

c 中int p和int p的區別 int p 是正確的,與p靠得最近,所以p是乙個引用,這個引用的型別是int 也就是乙個指標變數的引用,但是必須初始化,否則也是錯誤的。int p 是不正確的,與p靠得最近,所以p是乙個指標,但是這個指標的型別是int 所以這個是錯吳的,因為不能建立引用的指標。i...

C 中關於int p和 int p的區別?

根據c primer介紹 對於int p 這種寫法合法,但是容易造成誤導 其基本資料型別是int,後面的 其實是宣告符。在一組公用的資料型別後面可以使用不同的宣告符。例如 int i 1024,p i,r i i是乙個int型別的資料,p是乙個int型的指標,r是乙個int型引用。對於int p,其...

堆和棧的區別 4

如果是 cdecl 的話,這裡是 ret 堆疊將由呼叫者恢復 函式結束 主程式呼叫func函式的 00401080 6a03 push 00000003 壓入引數param3 00401082 6a02 push 00000002 壓入引數param2 00401084 6a01 push 0000...