关键字static的作用(说明部分为转载)

本文详细解析了C语言中static关键字的三大作用:保持函数内变量的状态、限制模块内变量的可见性及限定函数的调用范围。通过具体示例说明了static如何帮助实现数据和代码的本地化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 键字static的作用是什么?
这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:
1在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少的人能懂得第三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围的好处和重要性

int testStatic()
{
 int x=1;
 x++;
 return x;
}
main()
{
 int i;
 for(i=0;i<5;i++)
 printf("%d/n",testStatic());
 getch();
}

==》2 2 2 2 2

 

int testStatic()
{
 static  int x=1;
 x++;
 return x;
}
main()
{
 int i;
 for(i=0;i<5;i++)
 printf("%d/n",testStatic());
 getch();
}

==》2 3 4 5 6

 

// Test_Static.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
//int testStatic()
//{
// int x=1;
// x++;
// return x;
//}
//void main()
//{
// int i;
// for(i=0;i<5;i++)
// printf("%d/n",testStatic());
// getch();
//}

 

//int testStatic()
//{
// static  int x=1;
// x++;
// return x;
//}
//void main()
//{
// int i;
// for(i=0;i<5;i++)
// printf("%d/n",testStatic());
// getch();
// }

class A
{
 //static int a=0;
public:
 static int a;
 
 A()
 {
  

 }
 void outA()//error,it must be void outA()
 {
  cout<<"a is "<<a<<endl;
  a++;
 }
};

int A::a=1;//要在这里初始化模块的静态变更

void main()
{
 A b;
 b.outA();
 
 A c;
 c.outA();
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值