7.4.1 局部变量的代码作用域
(1)代码块基本可以理解为一对大括号{}括起来的部分。
(2)代码块不等于函数,因为if,while,for都有{}。所以代码块是 <= 函数的。
(3)局部变量的作用域是代码块作用域,也就是说一个局部变量可以被访问和使用的范围仅限于定义这个局部变量的代码块中定义式之后的部分。
7.4.2 函数名和全局变量的文件作用域
(1)文件作用域的意思就是全局的访问权限,也就是说在整个.c文件中都可以访问这些东西。这就是平时所说的局部和全局,全局就是文件作用域。
(2)详细准确的说:函数和全局变量的作用域是定义所在的整个.c文件之内定义式之后的部分。
总结:
1、不管是局部变量、全局变量、函数,都要先定义才能使用;
2、严格来说,我们上面的总结是错误的。准确的说:全局变量/函数的作用域都是自己所在的代码块文件,但是定义式之前的部分因为缺少声明所以没法用,解决方案是:1、把它定义到前面去;2、定义到后面但是在前面加声明;局部变量因为无法声明,所以只能定义到前面去。
3、在C89标准的编译器中(现在很多编译器还延续使用C89标准),所有的局部变量必须先定义在最前面,在变量定义之前不能有一句执行代码。在C99标准的编译器中(gcc兼容c99标准)可以允许在代码块内任意地方定义变量。但是允许定义的变量还是只能使用在定义了之后,定义之前还是不能用的。
7.4.3 同名变量的掩蔽规则
ÿ