
在编程中,您经常需要处理变量的范围。变量的作用域决定了是否可以在特定代码块内访问和修改它。
在本教程中,你将了解 C 编程语言中的变量作用域。您将看到一些代码示例,以帮助您了解局部变量和全局变量之间的差异。
目录
变量的作用域是什么?
C 中变量的局部作用域 – 嵌套块
C 中变量的局部作用域 – 嵌套块示例 2
C 中变量的局部范围 – 不同的块
C 语言中变量的全局范围
总结
正文起:
在继续了解局部和全局变量作用域之前,让我们了解作用域的含义。
简单来说,变量的作用域是它在程序中的生存期。
这意味着变量的作用域是整个程序中的代码块,其中声明、使用和修改变量。
在下一节中,您将了解变量的局部作用域
在本节中,您将了解局部变量在 C 中的工作原理。您将首先编写几个示例,然后概括范围原则。
▶ 下面是第一个示例:
#include int main()
{int my_num = 7;{//add 10 my_nummy_num = my_num +10;//or my_num +=10 - more succinctlyprintf("my_num is %d",my_num);}return 0;
}
让我们了解上述程序的作用。
在 C 语言中,用 分隔代码块。左大括号和右大括号分别表示块的开始和结束。{}
main()my_nummy_num现在,编译并运行上述程序。下面是输出:
//Outputmy_num is 17
您可以看到以下内容:
my_nummy_num▶ 这是另一个相关示例:
#include int main()
{int my_num = 7;{int new_num = 10;} printf("new_num is %d",new_num); //this is line 9return 0;
}
main()my_numnew_numnew_num如果您尝试编译上面的代码,您会注意到它无法成功编译。您将收到以下错误消息:
Line Message
9 error: 'new_num' undeclared (first use in this function)
这是因为变量是在内部块中声明的,其范围仅限于内部块。换句话说,它是内部块的本地,无法从外部块访问。new_num
基于上述观察结果,让我们写下以下变量局部范围的通用原则:
{/*外部*/{此部分开始之前外部的内容可以在这里访问/*内部*/}内部的内容在这里无法访问}
在前面的示例中,您了解了如何无法从块外部访问嵌套内部块中的变量。
在本节中,您将了解在不同块中声明的变量的局部范围。
#include int main()
{int my_num = 7;printf("%d",my_num);my_func();return 0;
}void my_func()
{printf("%d",my_num);
}
在上面的例子中,
my_nummain()main()my_nummy_func()my_nummain()my_func()main()现在编译并运行上面的程序。您将收到以下错误消息:
Line Message
13 error: 'my_num' undeclared (first use in this function)
如果您注意到,在 上,函数尝试访问在函数内声明和初始化的变量。line 13my_func()my_nummain()
因此,变量的作用域仅限于函数,并且称为函数的局部。my_nummain()main()
我们可以将局部作用域的概念概括地表示如下:
{/*代码1*/此处无法访问代码2 的内容}{/*代码2*/此处无法访问代码1的内容}
到目前为止,您已经了解了 C 变量的局部范围。在本节中,您将学习如何在 C 中声明全局变量。
▶ 让我们从一个例子开始。
#include
int my_num = 7;int main()
{printf("my_num can be accessed from main() and its value is %d\n",my_num);//call my_funcmy_func();return 0;
}void my_func()
{printf("my_num can be accessed from my_func() as well and its value is %d\n",my_num);
}
在上面的例子中,
my_nummain()my_func()my_nummain()my_func()main()my_func()my_nu该程序编译没有任何错误,输出如下所示:
//Output
my_num can be accessed from main() and its value is 7
my_num can be accessed from my_func() as well and its value is 7
在此示例中,有两个函数 – 和 。main()my_func()
但是,该变量不是程序中任何函数的局部变量。这种不是任何函数局部的变量被称为具有全局范围,称为全局变量。my_num
变量的全局范围原则可以总结如下:
此处声明所有全局变量
函数1(){所有全局变量都可以在函数1中访问}
函数2(){所有全局变量都可以在函数2中访问}
在本教程中,你已了解本地范围和全局范围之间的差异。这是关于 C 语言中变量范围的入门教程。
在 C 中,有一些访问修饰符来控制变量具有的访问级别。声明变量时,可以使用相应的关键字更改访问权限。