C语言中有四种作用域,代码块作用域、文件作用域、原型作用域、函数作用域,最容易混淆的是代码块作用域和函数作用域。
凡是花括号之间的都具有代码块作用域。特别的函数定义中的形参虽然处于花括号之外,但它也具有函数体这个代码块作用域。(花括号对就是代码块,函数体是花括号对,因此它也是代码块)
原型作用域只适用于函数原型中的形参(没有函数体的情况,有函数体的叫函数定义),即从声明处开始,到反小括号“)”处结束。函数原型本来可以没有形参名,但你也可以给出形参名。而且函数原型中的形参名可以和函数定义中的形参名不一样,只有类型一致即可。但通常的习惯是给出形参名并与函数定义中的形参一致。