在C語言中,沒有Lambda表達式,但是有類似的函數指針和匿名函數。如果您想要捕獲外部變量,可以使用函數指針和結構體的方法。
以下是一個使用函數指針捕獲外部變量的示例:
#include <stdio.h>
int add(int x, int y) {
return x + y;
}
int main() {
int x = 10;
int y = 20;
// 定義一個函數指針類型
typedef int (*func_ptr)(int, int);
// 創建一個匿名函數(閉包),捕獲外部變量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;
}
在這個示例中,我們定義了一個名為add_with_x_y
的匿名函數,它接受兩個整數參數并返回它們的和。我們通過將add
函數的地址和外部變量x
和y
的值捆綁在一起,創建了一個函數指針add_with_x_y
。然后,我們可以像調用普通函數一樣調用這個匿名函數。
如果您需要捕獲更多的外部變量,可以考慮使用結構體將它們封裝在一起。