在c語言中最令然頭疼的莫過於指標
特別是指標和陣列符號一起出現的
傻傻搞不清楚的原因主要在於運算子的優先順序沒有搞清
指標的運算子*,陣列運算子,函式運算子();
陣列元算符 運算優先順序和函式運算子()或者說強制改變運算順序符號()都是位於第一優先順序的
而我們的指標運算子則是第二優先順序
所以當出現
int *a;
比*優先和名稱結合,這個時候先結合就代表其屬性 肯定是乙個陣列 陣列裡面存放著什麼?
然後繼續結合 *指標 所以就指標陣列 最後結合int 指標指向int型別
int *a();
同理可以得到
()和a先結合得到 函式,然後結合* 函式返回指標,最後結合int得到 函式返回指標,指標指向int型別
當我們使用()來改變運算子的結合順序的時候 比如
int (*a)();
*先和名稱結合 得到指標,然後結合()得到函式,所以是指標指向乙個函式,然後結合int ,
我們就可以得到 乙個函式指標 返回int型別。
最後我們來檢驗乙個比較糟糕的東西
能寫出這種東西的人 就應該被人道毀滅
除了考試能用到 我不相信有人在實際開發的時候自己也會用這一坨屎
char ( *( *x[3]) () ) [5]
是在是太糟糕了 不過繼續我們的分析
x[3]:陣列
*x[3]:指標陣列
(*x[3])():指標陣列,指標指向函式
*(*x[3])():函式返回的是指標
(*(*x[3])())[5]:函式返回的指標是指向陣列的指標
最後結合char:函式返回的指標指向的陣列,陣列中的元素是char型的
綜上,x是乙個指標陣列,它裡邊元素是指向返回值為char [5],無引數的函式
C語言 函式,函式指標 指標陣列,陣列指標。
include char fun1 char p,char a char fun2 char p,char a char fun3 char p,char a int main char pfun char p,char a 第6行使函式指標指向我們自定義的fun1函式。第7行是通過函式指標去呼叫我...
C語言 指標陣列和指標陣列
本質是陣列 只不過呢,它裡面存放的資料型別不是int,也不是char這類基本型別,而是乙個指標型別,說白了就是位址,所以叫指標陣列!記住 是存放指標的陣列!int p n 本質是指標 只不過是指向乙個陣列的指標,也稱之為 行指標 int p n p是乙個指標,指向乙個int型別的一位陣列,這個一位陣...
C語言 函式指標 函式指標陣列 函式指標陣列的指標
1.定義理解 函式的位址可以通過取位址函式名拿到,也可以通過函式名直接拿到。2.函式指標 1 定義乙個函式test void test char str intmain 2 函式指標的使用 呼叫函式test,傳參 zhangsan p zhangshan 這裡的 沒有起作用,它是讓我們知道這是乙個指...