C中函数和块作用域的区别?

Difference between function and block scope in C?

C 中的块作用域和函数作用域有什么区别?有人告诉我,在大括号内声明的任何变量都算作在块范围内,但是当我们声明一个函数时,它以大括号开始和结束。我很困惑。

在C语言中函数作用域是描述标签作用域的正式术语。标签在整个函数中都是可见的,无论它在该函数中的何处声明。标签是唯一具有这种不寻常 属性 的实体,因此需要为它们设置特殊类型的范围。没有其他东西可以有 功能范围 .

变量不能有函数作用域。本地声明的所有变量始终具有 块作用域 。包围整个函数的最外层一对{ ... }也是一个块。