C 块级变量 在代码块中定义的变量

小夏 科技 更新 2024-01-31

所谓**块,是由包围**。 块在 C 语言中随处可见,例如函数体、选择结构、循环结构等。 不包含块的 C 程序根本无法运行,即使是最简单的 C 程序(如上一节所示)也无法运行。

C 允许您在块内定义变量,该块具有块级范围;换句话说,在块内定义的变量只能在块内使用,并且在块外时无效。

现在我们已经讨论了函数,在函数内部定义的变量称为局部变量,我们将继续讨论选择结构和循环结构。

例 1] 定义了一个函数 gcd() 来查找两个整数的最大公约数。

#include 

函数声明。 int gcd(int a, int b);你也可以写 int gcd(int, int);

int main()。

int n = 40;数

printf("block n: %d", n);

printf("main n: %d", n);

return 0;

运行结果:

block n: 40

main n: 22

这里有两个 n,它们位于不同的作用域中,不会产生命名冲突。 作用域小于 main(),内部 printf() 使用编号的 n,main() 内部的 printf() 使用编号的 n。

每个 C 程序都包含多个作用域,同名的变量可以出现在不同的作用域中,C 语言将按照从小到大的顺序逐层搜索父作用域中的变量,如果在最顶层的全局作用域中没有找到该变量,则会报错。

让我们用一个特定的**来演示:

#include 

int m = 13;

int n = 10;

void func1(){

int n = 20;

int n = 822;

printf("block1 n: %d", n);

printf("func1 n: %d", n);

void func2(int n){

for(int i=0; i<10; i++)

if(i % 5 == 0){

printf("if m: %d", m);

else{int n = i % 4;

if(n<2 &&n>0){

printf("else m: %d", m);

printf("func2 n: %d", n);

void func3(){

printf("func3 n: %d", n);

int main(){

int n = 30;

func1();

func2(n);

func3();

printf("main n: %d", n);

return 0;

下图说明了本节的范围:

蓝色表示作用域的名称,红色表示作用域中的变量,global 表示全局作用域。 在灰色背景的范围内,我们使用 m 变量,它在全局范围内,因此我们必须通过几层范围才能找到 m。

这就是这次的全部内容

相似文章

    C语言和C语言的区别

    C语言和C 的区别不仅限于语法层面,还深入到编程思维 图形处理 文件组织 语言功能和使用场合等诸多方面。首先,C是一种面向过程的编程语言,它侧重于程序执行的过程和步骤。它要求程序员注意程序中各种函数之间的调用关系和数据传输,以实现特定的功能。相比之下,C 采用面向对象的编程思维,并通过将问题分解为对...

    汇编语言和C语言的区别

    汇编语言和 C 语言在许多方面存在显着差异。首先,抽象程度是两者之间最重要的区别之一。作为一门高级编程语言,C 提供了许多抽象机制,例如数据类型 变量 函数和控制结构,这使得 C 更易于理解和编写,尤其是对于没有接触底层硬件的程序员。相比之下,汇编语言是一种低级编程语言,直接对应于特定的机器指令集,...

    汇编语言和C语言的区别

    汇编语言和 C 分别代表了低级和高级编程的极端。汇编语言直接映射到底层硬件,需要深厚的硬件知识,并编写复杂而庞大的指令序列,使其适用于需要极致性能和硬件细节的场景。相反,C 提供了更接近自然语言的高级抽象,允许程序员专注于算法和逻辑,而不关心底层细节。C 语言速度更快 更便携,适用于广泛的应用,包括...

    C语言和C语言有什么区别

    C 和 C 之间有几个主要区别 面向对象编程 OOP C 支持面向对象编程,而C不支持。这意味着 C 可以使用类和对象,而 C 主要是基于函数的。标准模板库 STL C 提供了一组标准模板库 STL 其中包括许多用于常见数据结构和算法操作的预定义类和函数。C 中没有这样的库。异常处理 C 支持异常处...

    C和C语言,你知道多少?

    C 和C是软件开发领域广泛使用的两种编程语言。对于那些对计算机编程感兴趣的人来说,理解和掌握这两种语言非常重要,无论你是刚刚开始学习习编程,还是已经是一个有经验的开发人员,了解两者之间的关系对你未来的职业生涯都会有很大的帮助。.C 和C的区别 面向对象与面向过程。C 是一种面向对象的编程语言,支持面...