iT邦幫忙

1

【c/c++學習筆記】如何將函數(指標)當作參數傳入另一個函數中?

c++

此文作為自己的學習筆記,
近日想說python語言可以將函數當作參數傳入另一個函數中,
c或c++是否可以做的類似的事情呢?
答案是肯定的,
譬如說在C語言裡面的<stdlib.h>函式庫有qsort()函數,
它的宣告為:
void qsort(void* v, size_t N, size_t size, int (*compar)(const void *, const void *));
其中int (*compar)(const void *, const void *))要傳的便是一個函數

底下自己寫程式練習將函數當作參數傳入另一個函數中:

#include <iostream>
#include <vector>
using namespace std;


/* 函數功能:給定一個vector v與函數f, 
將每個v[i]的值設為f(i)*/
void assign(vector<int> &v, int (*f)(int))
{
    for (int i=0; i<v.size(); i++)
        v[i] = f(i);
}

int square(int x)
{
    return x*x;
}

int main(void)
{
    vector<int> v(10);
    assign(v, square);
    for(int e: v){
        cout << e << " ";
    }
    cout << endl;
}

結果:
0 1 4 9 16 25 36 49 64 81

參考資料

  1. [教學]- C/C++ Callback Function 用法/範例 (內含Function Pointer 用法)

尚未有邦友留言

立即登入留言