c語言lambda如何捕獲外部變量

小樊
83
2024-09-20 09:06:07
欄目: 編程語言

在C語言中,沒有Lambda表達(dá)式,但是有類似的函數(shù)指針和匿名函數(shù)。如果您想要捕獲外部變量,可以使用函數(shù)指針和結(jié)構(gòu)體的方法。

以下是一個(gè)使用函數(shù)指針捕獲外部變量的示例:

#include <stdio.h>

int add(int x, int y) {
    return x + y;
}

int main() {
    int x = 10;
    int y = 20;

    // 定義一個(gè)函數(shù)指針類型
    typedef int (*func_ptr)(int, int);

    // 創(chuàng)建一個(gè)匿名函數(shù)(閉包),捕獲外部變量x和y
    func_ptr add_with_x_y = (&add, x, y);

    int result = add_with_x_y(30, 40);
    printf("Result: %d\n", result);

    return 0;
}

在這個(gè)示例中,我們定義了一個(gè)名為add_with_x_y的匿名函數(shù),它接受兩個(gè)整數(shù)參數(shù)并返回它們的和。我們通過將add函數(shù)的地址和外部變量xy的值捆綁在一起,創(chuàng)建了一個(gè)函數(shù)指針add_with_x_y。然后,我們可以像調(diào)用普通函數(shù)一樣調(diào)用這個(gè)匿名函數(shù)。

如果您需要捕獲更多的外部變量,可以考慮使用結(jié)構(gòu)體將它們封裝在一起。

0