今天發現了一種寫法,順便記錄一下。廢話不多說,先看**:
#include using namespace std;
int addition(int x, int y)
int subtraction(int x, int y)
int operation(int x, int y, int (*function)(int, int))
int main()
在這裡我們可以將(*function)視為函式的指標,直接將函式名稱傳進去,但是內部獲取的是指標,而不是函式本身,所以不用擔心這麼做是把函式拷貝乙份浪費了記憶體的空間。
網上有一些用typedof方法的實現,其實也可以,但是這種方法相對更加簡潔一些。對了,上面的
int answer = operation(1, 2, addition);
addition也可以加上&,但其實都一樣。編譯器會自己讀取位址。
指標作為函式引數傳參的問題
在大一的時候就遇到的乙個當時一直懂得不太透徹的問題 使用函式來交換兩個變數的值.現在常常用到algorithm標頭檔案裡的swap函式,因此決定整理一下這個問題.希望能對後來者有所幫助.首先,要知道的乙個結論是函式引數的傳遞是單向的,也就是實參 形參,無法完成形參 實參的引數傳遞.因此,像下面這種寫...
指標作為函式引數,C語言指標作為函式引數詳解
include void swap int a,int b 函式宣告 intmain void void swap int a,int b 大家想一下,執行這個程式是否能互換 i 和 j 的值?不能!i 還是3,j 還是5。因為實參和形參之間的傳遞是單向的,只能由實參向形參傳遞。被調函式呼叫完之後系...
C語言 函式傳參 傳值 傳指標 傳指標的指標
本文參考這兩篇文章 文章 一 文章二。在學習資料結構中建立單鏈表的時候,疑惑 已經定義了node,用到結構體指標的時候直接用 node就好了,為什麼還要再定義乙個 linklist呢,為什麼傳參的時候又要用linklist l呢?下面我們就來循序漸進,由淺入深來解決問題,這裡舉兩個例子作為比較。首先...