在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ù)的地址和外部變量x
和y
的值捆綁在一起,創(chuàng)建了一個(gè)函數(shù)指針add_with_x_y
。然后,我們可以像調(diào)用普通函數(shù)一樣調(diào)用這個(gè)匿名函數(shù)。
如果您需要捕獲更多的外部變量,可以考慮使用結(jié)構(gòu)體將它們封裝在一起。