IOS開發之路 C 學習筆記7 19

2021-06-16 20:10:16 字數 1379 閱讀 7859

今天主要是複習了下之前學習的東西,加深一些新的理解,以及一些新的認識.

首先定義乙個函式

int sum(int a , int b )

之後在main中定義乙個函式指標,最簡單的方法為複製函式的宣告.然後把函式名換為*指標名,並且只保留資料型別不用變數.

定義如下.

int (*p)(int  , int );
需要注意的是*p必須到括號的.
之後還需要把指標指向函式,實際上就等於指標名指向函式名.

p = sum;

之後呼叫這個指向指標的函式.

我直接輸出

( *p)(5,6)
同下面效果一樣.

printf("%d",p(5,6));

結果為11.

可是如果這樣寫不是反正不省事,更加複雜了嗎?

指標函式到底有什麼作用呢?

如果我們要計算的不僅僅是加法運算呢?

可不可以輸入兩個數,然後再輸入乙個運算型別來返回結果呢?

上面剛說過*p可以指向函式.那麼我們可以用指標來指向函式來引用啊.

我們知道函式不僅可以傳變數,常量,表示式外,指標也可以,就上道題而言,如果我們用傳指標來計算呢?

那麼我們再寫乙個函式 calculate 

int calculate(int a, int b , int (*p)(int, int))

calculate函式是用來對a和b進行計算的,至於做什麼運算.取決與p.

之後在輸出看看

printf("%d",calculate(5, 6, sum));

結果也是11.

那麼這裡函式指標的作用就出來了.

我們要寫其他運算的話,只需要在寫幾個方法就好了

int sum(int a , int b )

int sub(int a, int b)

int mul(int a, int b)

int divi(int a, int b)

int ram(int a, int b)

這樣我們呼叫的時候,只需要在calculate裡面改變指標p所指向的函式就可以進行不同的運算,

其實calculate裡面的

int (*p)(int a, int b)

就等同於 p = sum or p = ram..... 等等.

IOS開發之路 C 學習筆記7 15

今天聽的還是挺輕鬆的,但是還是學到了以前不知道的東西.比如 i 先自增 再使用 i 先使用 再自增 高精度忘低精度轉 不四捨五入直接捨掉 例 printf d int 3.14 還有幻影回車符.例用scanf輸入時 void getchar 其中輸入完4個數字之後 如輸入1 2 3 4 之後回車,輸...

IOS開發之路 C 學習筆記7 16

c語言中使用0作為假,非0即為真 與 同真為真 同假為假 其中有乙個為假 即為假 或 同真為真 同假為假 有真即真 非 非真即假 反之亦然 運算子優先順序 綜合性 從左到右 算數,單目運算子 從右到左 算術,單目運算子 從左到右 算數,雙目運算子 從左到右 關係運算子 從左到右 關係運算子 從左到右...

IOS開發之路 C 學習筆記7 17

7 17 星期3 c語言迴圈有三種 while do while forbreak 跳出迴圈 距離自己最近的 continue 跳出本次迴圈,而不結束整個迴圈,然後繼續下次迴圈 0 1 2 3 4 5 6 100 for i 0 i 100 i else sum i 今天講的迴圈結構聽的很簡單,下午...