函数与局部、全局和静态局部变量

函数与局部、全局和静态局部变量

我们知道在c++中一个函数一般会有它的参数。
例如最简单的形式参数:这个参数也可以称为局部变量。
那么现在介绍什么叫局部变量:
我们知道,一个变量有它的作用域(也就是能引用该变量的程序范围),局部变量即指只在程序的某一部分生效,而在其他部分没有作用的参数,例如我们熟悉的:

for(int i=0;i<n;i++)
{
   body
}

那么这个i就是一个只在这个for循环中生效的一个局部变量,在这个for循环之外是无法使用变量i的。
函数的形式参数,也就是这么一个局部变量,它只在函数内部生效,并不会返回到原函数中。

同样的,c++允许使用全局变量。
全局变量定义在所有函数之外,可以被其作用域内所有的函数访问。
而且,局部变量没有缺省值(默认值),而全局变量的缺省值为0。

对于全局变量与局部变量的比较,可以看看下面的代码:

#inlcude<iostream>
using namespace std;

void t1();
void t2();

int main()
{
   t1();
   t2();
   return 0;
}

int y;

void t1()
{
   int x=1;
   cout<<"x"<<x<<endl;
   cout<<"y"<<y<<end;
   x++;
   y++;
}

void t2()
{
    int x=1;
    cout<<"x"<<x<<endl;
    cout<<"y"<<y<<endl;
}

程序的输出如下:

x1
y0
x1
y1

至此,应该可以对局部变量和全局变量有一个了解了。
接下来,介绍静态局部变量:
当一个函数结束执行后,其所有的变量都会自动销毁,而有时,我们需要保留这些局部变量的值,一边在下次调用中使用。而时候就需要用到静态局部变量了。
静态局部变量声明的关键字是 static。
例如:

#include<iostream>
using namespace std;

void ti();

int main()
{
   ti();
   ti();
   return 0;
}

void ti()
{
   static int x=1;
   int y=1;
   x++;
   y++;
   cout<<"y"<<y<<endl;
   cout<<"x"<<x<<endl;
}

函数的输出如下:

y2
x2
y2
x3

这里的静态变量x一直被保存在函数ti中了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值