php网站制作过程中遇到的问题及解决办法,wordpress git编辑器,wordpress mysql缓存,我们的爱情网站制作一、引言 在 C 语言里#xff0c;作用域指的是程序中变量、函数、类型等标识符能够被使用的范围。C 语言里有四种主要的作用域#xff1a;块作用域、函数作用域、文件作用域和原型作用域#xff0c;下面为你展开介绍#xff1a; 二、块作用域 定义#xff1a;块作用域是 C…一、引言 在 C 语言里作用域指的是程序中变量、函数、类型等标识符能够被使用的范围。C 语言里有四种主要的作用域块作用域、函数作用域、文件作用域和原型作用域下面为你展开介绍 二、块作用域 定义块作用域是 C 语言中最常见的作用域类型变量在由花括号 {} 所包围的代码块内声明时就具有块作用域。代码块能够是函数体、循环体、条件语句体等。规则 可见性具备块作用域的变量仅能在其声明所在的代码块以及嵌套在该代码块内的子代码块中被访问在代码块外部该变量不可见。生命周期块作用域变量的生命周期从其声明处开始到包含该声明的代码块执行结束时终止。一旦代码块执行完毕变量所占用的内存就会被释放。 示例
#include stdio.h
int main() {{int num 10; // 此变量具有块作用域printf(num 的值: %d\n, num);}// 下面这行代码会引发编译错误因为 num 在该作用域不可见// printf(num 的值: %d\n, num); return 0;
}
三、函数作用域
定义在 C 语言中仅有 goto 语句的标签具有函数作用域。规则 可见性函数作用域的标签在整个函数内部均可见不管标签声明在函数的哪个位置。生命周期标签的生命周期和函数的执行周期一致只要函数在执行标签就能够被引用。 示例
#include stdio.h
void test() {goto end; // 跳转到 end 标签printf(这行代码会被跳过。\n);
end:printf(已到达 end 标签。\n);
}
int main() {test();return 0;
}
四、文件作用域
文件作用域
定义当变量或函数在所有函数和代码块之外声明时它们就具有文件作用域。规则 可见性具有文件作用域的变量和函数在整个源文件中都可见。不过若要在其他源文件中使用这些标识符就需要进行恰当的声明使用 extern 关键字。生命周期文件作用域变量和函数的生命周期从程序开始执行时起到程序结束时止。 示例
#include stdio.h
// 具有文件作用域的变量
int globalVar 20;
// 具有文件作用域的函数
void display() { printf(全局变量 globalVar 的值: %d\n, globalVar);
}
int main() {display();return 0;
}
五、原型作用域
定义原型作用域仅适用于函数原型里声明的参数。函数原型是在函数定义之前对函数的声明用于告知编译器函数的名称、返回类型和参数类型。规则 可见性函数原型中声明的参数名仅在原型声明的括号内有效。在函数原型外部这些参数名不可见编译器只关注参数的类型。生命周期原型作用域参数的生命周期仅限于函数原型声明本身对函数定义中的参数没有影响。 示例
#include stdio.h
// 函数原型
int sum(int a, int b);
// 函数定义
int sum(int x, int y) { return x y;
}
int main() {int result sum(3, 5);printf(两数之和: %d\n, result);return 0;
}
六、作用域的嵌套和遮蔽
作用域的嵌套C 语言中作用域能够嵌套比如一个函数内部可以包含多个代码块每个代码块都有自身的作用域。当访问一个变量时编译器会从当前作用域开始查找若找不到就会向上一级作用域继续查找直至找到该变量或者到达最外层作用域。遮蔽当不同作用域中声明了同名的变量时内层作用域的变量会遮蔽外层作用域的变量。也就是说在内层作用域中使用该变量名时访问的是内层作用域的变量而非外层作用域的变量。示例
#include stdio.h
int num 10; // 具有文件作用域的变量
int main() {int num 20; // 具有块作用域的变量遮蔽了文件作用域的 numprintf(块作用域 num 的值: %d\n, num);{int num 30; // 内层块作用域的变量遮蔽了外层块作用域的 numprintf(内层块作用域 num 的值: %d\n, num);}return 0;
}