c 用指標將函式作為引數傳參

2021-08-02 08:52:04 字數 497 閱讀 1435

今天發現了一種寫法,順便記錄一下。廢話不多說,先看**:

#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呢?下面我們就來循序漸進,由淺入深來解決問題,這裡舉兩個例子作為比較。首先...