Block scope
From cppreference.com
If the declarator or type specifier that declares the identifier appears inside a block or within the list of parameter declarations in a function definition, the identifier has block scope, which terminates at the end of the associated block.
So, placement of an identifier's declaration (in a declarator or type specifier) inside a block or within the list of parameter declarations in a function definition means that the identifier has block scope. Block scope of an identifier extends from the declaration to the end of the block in which the declaration appears.
[edit] Example
Identifiers a, b, and c have block scope.
Run this code
#include <stdio.h> void f (int a) { int b = 1; static int c = 2; } /* end of block associated with identifiers a,b,c */ int main(void) { return 0; } /* end of this translation unit, end of file scope */
Possible output:
(none)