Lambda Expressions are nameless functions given as constant values, and written exactly in the place where it's needed, typically as a parameter to some other function. The canonical example is that you'll pass a comparison function to a generic "sort" routine, and instead of going to the trouble of defining a whole function (and incurring the lexical discontinuity and namespace polution) to describe this comparison, you can just pass a lambda expression describing the comparison.
HOWEVER, this misses one of the most important features of Lambda Expressions, which is that they execute in the context of their appearance. Therefore, they can use the values of the variables that are defined in that context.
Lambda expressions appear (with different syntax) in all LISPs, Perl, Python, and many other languages, but notably not C, Java, or any similar language, even though those all have a way to deal with passing functions (or some excuse for them) around as parameters. They are a syntax element with particular semantics, and those semantics place more requirements on the runtime than C was designed to require.