C語言 指標陣列和指標陣列 函式指標和指標函式

2021-07-04 12:28:47 字數 984 閱讀 3585

在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 這裡的 沒有起作用,它是讓我們知道這是乙個指...