參考《讓你不再害怕指標》
從復合函式整體換元從外層到內層,並且每層從函式呼叫和賦值來講肯定有意義,這兩個角度理解。前提還是要知道結合的優先順序。
int p;//這是乙個普通的整型變數
沒什麼好說的
int *p;
//首先從p 處開始,先與*結合,所以說明p 是一
//個指標,然後再與int 結合,說明指標所指向
//的內容的型別為int 型.所以p 是乙個返回整
//型資料的指標
沒什麼好說的
int p[3];
//首先從p 處開始,先與結合,說明p 是乙個數
//組,然後與int 結合,說明陣列裡的元素是整
//型的,所以p 是乙個由整型資料組成的陣列
int a ;a 是乙個int
p[3] = a, 看成賦值語句,那麼說明p 是乙個 int 陣列
int *p[3];
//首先從p 處開始,先與結合,因為其優先順序
//比*高,所以p 是乙個陣列,然後再與*結合,說明
//陣列裡的元素是指標型別,然後再與int 結合,
//說明指標所指向的內容的型別是整型的,所以
//(感覺這句話 理解起來有點突兀,為什麼 不是 指向 p[3] 畢竟 …)
//p 是乙個由返回整型資料的指標所組成的陣列
p[3]看成 整體
int * a ,a就是乙個指標,指向int
p[3] = a,看成賦值語句,說明p是乙個陣列,陣列 元素為指標。
合起來: p是乙個陣列,陣列 元素為指標。
int (*p)[3];
(*p)看成 整體
int a[3] 是乙個陣列,說明a 是乙個int [3] 陣列,
*p=a ,看成賦值語句,說明 p 指向了a,*p就是 解指標p 可以接受陣列 int[3]
合起來: p 指向了乙個陣列,陣列有3個 元素,元素型別為int
int **p;
//首先從p 開始,先與*結合,說是p 是乙個指標,然
//後再與*結合,說明指標所指向的元素是指標,然
//後再與int 結合,說明該指標所指向的元素是整
//型資料.由於二級指標以及更高階的指標極少用
//在複雜的型別中,所以後面更複雜的型別我們就
//不考慮多級指標了,最多隻考慮一級指標.
沒什麼好說的
int p(int);
//從p 處起,先與()結合,說明p 是乙個函式,然後進入
//()裡分析,說明該函式有乙個整型變數的引數
//然後再與外面的int 結合,說明函式的返回值是
//乙個整型資料
沒什麼好說的
int * p(int)
int * a; a 是乙個int指標
a = p(int) ;看成函式呼叫賦值語句,那麼p 是乙個函式 ,返回值為a
合起來: p 是乙個函式,接收乙個int 型引數,返回值乙個 int 指標
int (*p)(int);
(*p) 是乙個整體
令 int (*p)(int) = int a(int);
那麼 a 是乙個函式,函式接收乙個int 返回乙個int
a = (*p) 看成呼叫語句行不通,沒關係就反過來,
(*p)=a , 看成賦值語句,
p是乙個函式指標 ,因為解應用後可以接收a
合起來:p是乙個函式指標 ,函式接收乙個int 返回乙個int
int *(*p(int))[3];
令 int *(*p(int))[3] = int * a [3]
那麼a是乙個陣列 ,陣列元素為 int 指標
a = (*p(int)) ,能看成呼叫語句吧。(因為a是乙個陣列,函式不能直接返回,這裡通過返回指標所以p前面有個*)
p 是乙個函式 ,返回乙個指標,解引用後,就是陣列a
合起來:p 是乙個函式,接收乙個int 引數,返回乙個指標,指向陣列,陣列有3個元素,元素是 int * 指標
注意 (*p(int)) 裡的 * !!!
int * (fun1(int para1,int para2))[4]; ## err
這個 fun1就是 直接返回陣列了,但是c/c++ 函式是不能直接返回陣列的,(只能用 struct/class 包裝,或是使用c++11的std::array。)
int *(* (*p)(int))[3];
p 是乙個函式指標,這個函式接收乙個int 引數,返回乙個指標,指向陣列,陣列有3個元素,元素是 int *
int (*p(int))[3];
p 是乙個函式,接收乙個int 引數,返回乙個指標,指向陣列,陣列有3個元素,元素是 int
int ia[3][4]
int (&row)[4]= ia+1 // 這個是對整個陣列的引用
int& row[4]= ia+1 // 元素為引用的陣列,這個是不存的,編譯通不過
c指標陣列與陣列指標與指標函式與函式指標筆記
include include typedef struct t ooxx t ooxx,pt ooxx 測試陣列指標 void test ooxx arrayp t ooxx p int num 測試指標陣列 void test ooxx parray t ooxx p,int num 測試函式指...
c語言陣列與指標,函式與指標
學過c語言的人都知道,指標是c語言中比較複雜難理解的乙個知識點,想要理解透徹有些難度,所以在此辨析一些容易混淆的概念,整理了有關指標的知識點。首先,先來看幾個概念。指標變數存放位址的變數。變數指標 變數的位址。所以,我們常常聽到定義乙個指標,實際上是定義乙個指標變數,而不是定義乙個指標,指標既然是位...
C語言 函式指標 函式指標陣列 函式指標陣列的指標
1.定義理解 函式的位址可以通過取位址函式名拿到,也可以通過函式名直接拿到。2.函式指標 1 定義乙個函式test void test char str intmain 2 函式指標的使用 呼叫函式test,傳參 zhangsan p zhangshan 這裡的 沒有起作用,它是讓我們知道這是乙個指...