局部变量与全局变量

一、局部变量

在一个函数内部定义的变量是内部变量,它们只在函数范围内有效,即就是只有本函数能够使用它们,在函数以外不能够使用,如果使用就会出现变量未定义的错误。这些内部变量称为局部变量。

注意:主函数main中定义的变量也只能在main函数内部使用,主函数也不能使用其他函数定义的变量。但是,不同函数可以使用同名的变量,它们之间互不干扰。特别的:形式参数也是局部变量。

例如:

#include <stdio.h>

void fun()

{

int num=10;

num++;

printf("fun->%d\n",num);

}

int main()

{

int  i=0;

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

fun();

return 0;

}

其中,num是fun函数中定义的局部变量,只在fun函数内部起作用,main函数中不能够使用fun函数中定义的num变量。同理,i是main函数中定义的局部变量,也只在main函数中有效。

二、全局变量

在函数之外定义的变量是全局变量,也称外部变量。全局变量的有效范围从定义变量的位置开始到文件结束。

注意:一般情况下,尽量不要使用全局变量,它会使程序的通用性降低。若在一个源文件中,全局变量与局部变量同名,全局变量会被屏蔽,此时局部变量起作用。

例如:

#include <stdio.h>

int num=10,i=0;

void fun()

{

num++;

printf("fun->%d\n",num);

}

int main()

{

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

fun();

return 0;

}

其中,num和i就为定义的全局变量,它的作用范围到程序结束。fun和main函数都可以使用这两个全局变量。

在编写程序时,我们可以根据实际情况合理的使用全局变量和局部变量,但是全局变量应该尽量少用,在一些较大的程序中使用全局变量,会降低程序的可靠性和通用性。由于当全局变量和局部变量同名时,全局变量会被屏蔽,此时局部变量起作用。

时间: 2024-12-28 13:08:28

局部变量与全局变量的相关文章

[Sass]局部变量和全局变量

[Sass]局部变量和全局变量 Sass 中变量的作用域在过去几年已经发生了一些改变.直到最近,规则集和其他范围内声明变量的作用域才默认为本地.如果已经存在同名的全局变量,从 3.4 版本开始,Sass 已经可以正确处理作用域的概念,并通过创建一个新的局部变量来代替. 全局变量与局部变量 先来看一下代码例子: //SCSS $color: orange !default;//定义全局变量(在选择器.函数.混合宏...的外面定义的变量为全局变量) .block { color: $color;//

C++局部变量、全局变量、静态变量(堆、栈、静态存储区)

1 static关键字 1.1 隐藏 eg: //a.c文件中 char a = 'A'; void msg() { printf("Hello\n"); } //main.c文件中 extern char a; printf("%c",a); 输出结果:A Hello 所有未加static前缀的全局变量和函数都具有全局可见性,其它的源文件也能访问.a是全局变量,msg是函数,并且都没有加static前缀,因此对于另外的源文件main.c是可见的. 如果加了stat

局部变量与全局变量在声明时的注意事项

/* ============================================================================ Name : TestVariable.c Author : lf Version : Copyright : Your copyright notice Description : 局部变量与全局变量在声明时的注意事项 全局变量只能要常量赋值,但是局部变量可用常量和表达式以及函数赋值. 这是为什么呢? 程序在开始执行时需要用适当的值来初

javascript中局部变量和全局变量的区别详解

javascript有两种变量:局部变量和全局变量.当然,我们这篇文章是帮助大家真正的区别这两种变量. 首先,局部变量是指只能在本变量声明的函数内部调用.全局变量时整个代码中都可以调用的变量.当然,单单从字面上理解肯定是不清楚的,下面我详细的介绍下: 大家都知道,变量是需要用var关键字声明的.但是javascript中也可以隐式的使用变量,就是不用声明,直接使用.而且,千万注意,javascript把隐式声明的变量总是当成全局变量来使用的. 例如: 代码如下: function myName(

使用Lua 局部变量来优化性能,同时比较局部变量和全局变量

在竞争激烈的游戏行业中,尤其页游,面对策划复杂和频繁的需求,使用脚本可以降低难度和成本.在使用Lua的过程中,会经常访问全局变量来作为配置文件. 在访问全局变量时,可以通过局部变量引用全局变量来优化.当然,这样的优化毫无意义. Locals Vs Globals  from  http://lua-users.org/wiki/LocalsVsGlobals Comparison between local and global variables: Implementation: Locals

使用Lua 局部变量来优化性能,同一时候比較局部变量和全局变量

在竞争激烈的游戏行业中,尤其页游,面对策划复杂和频繁的需求,使用脚本能够减少难度和成本.在使用Lua的过程中,会常常訪问全局变量来作为配置文件. 在訪问全局变量时,能够通过局部变量引用全局变量来优化.当然,这种优化毫无意义. Locals Vs Globals  from  http://lua-users.org/wiki/LocalsVsGlobals Comparison between local and global variables: Implementation: Locals

JavaScript中局部变量与全局变量的不同

JavaScript中局部变量与全局变量 我们知道,JavaScript的变量是松散型的变量,也就是说,其变量只需用var声明,其赋值的类型是不限定的.比如: var person=18; person="zhuzhenwei";  即先给person保存了一个number类型的值,之后还可以保存一个string类型的值,但是,这种做法是不推荐的. 甚至我们都可以直接给一个变量赋值,而不需要声明.比如: person=18; person="zhuzhenwei";

javascript 关于局部变量和全局变量

js中函数执行过程不只是单纯的局部变量覆盖全局变量,和函数里面的声明情况有关.比如: <script> var a =1; function test(){ alert(a); //a为undefined! 这个a并不是全局变量,这是因为在function scope里已经声明了(函数体倒数第4行)一个重名的局部变量, //所以全局变量a被覆盖了,这说明了Javascript在执行前会对整个脚本文件的定义部分做完整分析,所以在函数test()执行前, //函数体中的变量a就被指向内部的局部变量

局部变量和全局变量的区别

局部变量和全局变量的区别 局部变量可以与全局变量重名,但是局部变量会屏蔽全局变量.要使用全局变量,需要使用::.在函数体内引用变量会用到同名的局部变量而不是全局变量,对于一些编译器来说,在同一个函数体内可以定义多个同名的局部变量.例如我们可以在一个函数内部,在两个循环中都定义同名的局部变量i,而局部变量i的作用域在那个循环体内 具体来说,全局变量和局部变量的区别如下: 1. 作用域不同:全局变量的作用域为整个程序,而局部变量的作用域为当前函数或循环等 2. 内存存储方式不同:全局变量存储在全局数

static作用(修饰函数、局部变量、全局变量)转自http://www.cnblogs.com/stoneJin/archive/2011/09/21/2183313.html

static作用(修饰函数.局部变量.全局变量) 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)先来介绍它的第一条也是最重要的一条:隐藏. 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性.为理解这句话,我举例来说明.我们要同时编译两个源文件,一个是a.c,另一个是main.c. 下面是a.c的内容 char a = 'A'; // global variablevoid msg() {    printf("Hello\n