p 與 p 的區別

2021-06-09 23:19:59 字數 1037 閱讀 7876

(*p)[ ] 與*p[ ]的區別

1.  int (*p)[2] 表示乙個指向一維整型陣列的指標

想想乙個簡單的指標, int  *q = a; // int a = ;

對於int (*p)[2] = a; // int a[2] = ;

只是對*q 的乙個擴充套件, 由一維變成了二維。 從指標指向的的物件就可以看出。

(int (*p) 指向陣列, *p 指向基本型別(不包括陣列))

所以, 我們可以使用與int *q類似的方式使用int (*p)

#include int main ()

; int (*p)[2] = a;

for (i = 0; i < 5; i ++)

printf ("\n");

} return 0;

}

2. int *p[5] 表示乙個指標陣列, 該陣列有5個元素, 每個元素都是乙個指向整型物件的指標。

#include int main()

; int *p[5];

for (i = 0; i < 5; i ++)

printf ("\n");

}}

想想在函式傳參時, 是否可以這樣傳參呢?

宣告乙個函式 void  print (int *p, int n);

這樣傳參對嗎? print (a, 5);

答案是不對, 因為實參a是乙個指向陣列的指標,型別為int (*); 而int *則

是乙個指標陣列, 型別為int **(二級指標),

存在編譯錯誤, 型別不一致, 且無法自動轉換。

有乙個小疑問, 在命令列引數中 int main (int argc, char *argv) , 這裡的

引數是如何傳遞的呢?

3. 兩者之間的區別

由以上的分析可知, int (*p) 是需知低維(或列), 而int *p則是須知高維

(或行, 陣列有幾個元素)

可以按多級指標或多維陣列的擴充套件方式, 擴充套件到多級或多維。

p 和 p的區別

p 和 p的區別 舉例,如清單3 cpp view plain copy include intmain void int p arr inta p 等價於a p 即a p p p 1 intb p 等價於b p 即p p 1 b p printf a d,b d n a,b return 0 例子...

p 3 與 p 3 的區別

p 3 與 p 3 的區別 int p 3 p是乙個陣列,此陣列有3個元素,每個元素都是int型別,也就是指向整型資料的指標型別。int a 10,b 20,c 30 int p 3 而int p 3 中的p是乙個指向陣列的指標,此陣列有3個int型別的元素。例如 int a 3 那麼p就是指向這個...

C語言指標 p 和 p及 p的區別

今天覆習了一下c語言的指標題目,發現在很多 結果題目中都出現了表示式 p p和 p,而這幾個表示式特別容易混淆。那麼通過什麼方式區分他們呢,答案就是運算子優先順序。和 指標訪問運算子 優先順序相同,根據從右往左的結合性,因此等價於 p 又因為後置 是先使用再自加,所以先取值 p,然後再讓p加1.p ...