1樓:
int (*(*p5)(int*))[5];——p5是個指標,指向乙個具有乙個int *型形參的函式,這個函式返回乙個指向具有5個int元素的陣列的指標。
c語言中int *p[5]與 int (*p)[5]的區別
2樓:姓從蓉秘素
你是不想問
int*p[
]和int
(*p)
[]的區別啊[]
的優先順序高於*
所以前者表示指標陣列,而後者是陣列指標,例如int*p[6]
表示p有6個元素,每個元素又是乙個int型指標變數。int(*p)[6]表示指向具有6個元素的一維int型陣列的陣列指標變數
3樓:衄潲
樓上說的是錯的,int *p[5],首先
它是乙個陣列,它的大小是5,它裡面存放的資料型別是int *,也就是整型指標。 所以它叫指標陣列、 (從右向左解析這個表示)
int (*p)[5],首先p是乙個指標,指向大小為5的陣列,因此這叫陣列指標。(括號優先)
這個在《c專家程式設計》裡面說的很清楚。你可以看一下。
4樓:庾詩珊趙寄
int(*p)[4];//是指向乙個2維陣列的指標int**p;//是乙個指標的指標
兩個都是指向位址的
int(*p)[4]
是接收二維陣列的位址(常量)
int**p
是接收指標變數的位址(變數)
我是這麼理解的,不知道對不。
5樓:貴華燦僧琛
你確定你輸入的語句沒有問題嗎?
int*p();//這是乙個整型指標函式,
int(*p)();//這個不能成為語句。
6樓:陳大濤
其實我們先討論乙個優先順序的問題,的優先順序高於*,這就是為什麼後者加了乙個(),int *p[5]定義乙個指標陣列p,講到底這個p是乙個陣列,陣列內的元素是5個指標,而陣列內的每乙個指標指向乙個int型的變數;int (*p)[5]定義了乙個指向5個元素的一維陣列的指標。
7樓:匿名使用者
第二個就是這個指標所指的值是乙個大小為5個int的陣列的首位址。換句話說,p+1(陣列位址+1)代表記憶體位址下移了5個單位。
8樓:匿名使用者
int *p[5]那麼p[0]是乙個int指標
int (*p)[5] 那麼p是乙個指向陣列的指標
c語言中 int*p[4] 和 int(*p)[4]的區別是什麼?
9樓:匿名使用者
int*p[4]是指標的陣列
,也就是說它
是乙個陣列,陣列裡存的是乙個個的指標
int(*p)[4]是陣列的指標,也就是說它是乙個指標,指向的是乙個陣列。指標指向的型別會影響到指標加減運算時位址的位移。比如說有乙個陣列 int a[4],加上取址運算子 &a,這個表示式的型別就是指向陣列的指標,可以這樣賦值 p = &a;。
一般用於向函式傳遞二維陣列的時候使用這種型別,這時還有一種更直觀的寫法
void matrix_sum(int matrix_a[4], int matrix_b[4])
這種寫法和
void matrix_sum(int (*matrix_a)[4], int (*matrix_b)[4])
是等價的。
10樓:望闌珊將盡
結合性不一樣:前者是指標陣列,為4個int指標的陣列,有4個元素;後者是陣列指標,為乙個指標,型別為指向包含4個int型別元素的一維陣列的指標。
C語言中5d中的5是什麼意思
那個 5 在這裡只表示是c語言中的乙個十六進製制數,1.如果是 d 的話,就是按整型資料的實際長度輸出 2.如果是 md 的話,就是說明 m 為指定的輸出欄位的寬度。如果資料的位數小於m,則左端補以空格,若大於m,則按實際倍數輸出。3.如果是 ld 的話,則輸出長整型資料。對於長整型資料來說如果用 ...
c語言若有說明intp1p2m5n以下
b,c是肯定正確的答案。關於 d,桐兒7ms籲8 解釋的很好。我一開始還犯嘀咕。d的問題是 p2是int指標,沒有初始化,也就是沒有指向任何實際的int變數地址。 桐兒7ms籲 a.p2 p1,p2不是雙指標 b,p2 n,n還沒有賦值 c,正確 d,p2 p1 原來p2還沒初始化,即沒有分配記憶體...
c語言中int222語句的結果為什麼是
c 語言中,逗號 也可以是運算子,稱為逗號運算子 comma operator 逗號運算子可以把兩個以上 包含兩個 的表示式連線成乙個表示式,稱為逗號表示式。其一般形式為 子表示式1,子表示式2,子表示式n例如 2 x,x 2 逗號運算子的優先順序是所有運算子中級別最低的,通常配合 for 迴圈使用...