变量

静态局部变量与普通变量的区别

(1)静态局部变量
在局部变量前加上存储类型说明static就构成了静态局部变量。
静态局部类型变量定义的一般形式为:
static 数据类型 变量名;
例如:
static int a,b;
静态局部变量的生存期则为整个程序有效。
③系统自动为静态局部变量赋初值0,而自动变量(局部变量)的初值则不确定。
(2)静态全局变量
在全局变量前加上存储类型说明static,就构成了静态全局变量,如:
static int a=3;
void main()
{

}
全局变量的作用域是整个源程序,而静态全局变量的作用域则是定义该变量的源文件,如果一个程序由多个“.c”文件组成,全局变量则在各个源文件中都是有效的,而静态全局变量则仅在定义它的源文件中有效。
外部变量的特点如下:
①外部变量与静态变量一样,系统自动为未初始化的变量赋0值。
②外部变量与全局变量一样,作用域从定义直到源程序结束,生存期为整个程序执行过程。
③外部变量可以被不同的文件共享,若只希望在本文件中使用,可以加static加以说明。

#include<stdio.h>
#include<stdlib.h>
static int n;//定义的静态全局变量
int fun1()
{
   static int m=0;//静态局部变量
   m++;
   return m;
}
int fun2()
{
    n=0;
    n++;
    return n;
}
int fun3(){
int k=0;
k++;
return k;
}
int main()
{
    int i;
    for(i=0;i<10;i++)
    {
       fun1();//m为静态局部变量   这个函数运行结束,这个静态变量的值不会被销毁,函数下次使用时仍能使用。
    }
    printf("m = %d\n",fun1());
    printf("n = %d\n",fun2());
    printf("k=%d\n",fun3());
system("pause");
return 0;
}

```c
#include <stdio.h>
int b;                   /*定义全局变量b*/
extern int c;       /*声明c为一个在wa2.c中定义的外部变量*/
int main()
{	void fun1();
	{	int a=3,b=4;        /*定义局部变量a,b*/
		printf("main1:a=%d,b=%d,c=%d\n",a,b,c);
		c=5;              /*给外部变量c赋值*/
		printf("main2:a=%d,b=%d,c=%d\n",a,b,c);
		fun1();
	}}
int c;
void fun1()
{
	int a=10,b=20;
	c=30;                /*修改外局变量c*/
	printf("fun1:a=%d,b=%d,c=%d\n",a,b,c);
	return;
}

#include <stdio.h>
int b;                   /*定义全局变量b*/
extern int c;       /*声明c为一个在wa2.c中定义的外部变量*/
int main()
{	void fun1();
	{	int a=3,b=4;        /*定义局部变量a,b*/
		printf("main1:a=%d,b=%d,c=%d\n",a,b,c);
		c=5;              /*给外部变量c赋值*/
		printf("main2:a=%d,b=%d,c=%d\n",a,b,c);
		fun1();
	}}
int c;
void fun1()
{
	int a=10,b=20;
	c=30;                /*修改外局变量c*/
	printf("fun1:a=%d,b=%d,c=%d\n",a,b,c);
	return;
}

需要操作与局部变量同名的全局变量时,就可以用作用域操作符“::”来访问全局变量,格式是在全局变量名前加上作用域操作符。

#include<stdio.h>
#include<iostream>
using namespace std;
double A;    //全局变量A
int main()
{	int A;                //全局变量A
	A=5;                 //为全局变量A赋值
	::A=2.5;            //为全局变量A赋值
	cout<<A<<endl;      //输出全局变量的值5
	cout<<::A<<endl;      //输出全局变量的值2.5
}

C语言中,变量的存储类型有以下4种。
(1)自动类型(auto)。
(2)寄存器类型(register)。
(3)静态类型(static)。
(4)外部类型(extern)。
变量的存储类型有静态存储和动态存储两种方式,其中自动类型和寄存器类型的变量属于动态存储方式,而外部类型和静态类型的变量属于静态存储方式。
自动类型变量是默认的存储类型
自动变量属于局部变量范畴,具有局部变量的一切特点。
①自动变量的作用域和生存期仅限于定义它的函数或复合语句内,即块(函数块或复合语句)内生存、块内有效。
②不同的函数(复合语句)中的自动变量可以同名。
③形参变量属于自动变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值