今天主要是複習了下之前學習的東西,加深一些新的理解,以及一些新的認識.
首先定義乙個函式
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 今天講的迴圈結構聽的很簡單,下午...