千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:沈阳千锋IT培训  >  技术干货  >  Static 变量放在函数内外,有什么区别?

Static 变量放在函数内外,有什么区别?

来源:千锋教育
发布人:xqq
时间: 2023-10-14 11:39:51

一、Static 变量放在函数内外的区别

区别就是静态变量只有名列前茅次运行函数的时候被创建,并且在函数结束的时候不会消亡;而普通的成员在函数结束的时候就会在内存中退栈消亡。
说了那么多,举个例子:
//Ex_1.c
void fun_1 ()
{
static int a = 0;
a ++;
printf (“%d”, a);
}
void fun_2 (int times)
{
int i = 0;
for (;i < times; i++)
{
fun_1 ();
}
}
之后再执行fun_2的话,就会依次打印:12345….直到times;
如果去掉static关键字,执行fun_2,屏幕就会打印111111…次数为times次;
下面举例说明一下函数外的:
//H.h
#ifndef _H_H_
#define _H_H_
static int a = 0;
#endif

//Ex_2.c
#include “H.h”
void fun_ex2 ()
{
a++;
printf (“%d”, a);//这时会打印1
}
//Ex_3
#include “H.h”
void fun_ex3 ()
{
printf (“%d”, a);//这时打印的依然是0,即便先被Ex_2中的fun_ex2()函数修改过,因为他们
//是两个独立的副本
}

延伸阅读:

二、static 函数 与 普通函数的区别

用static修饰的函数 本限定在 本源文件中 不能被本源码文件以外的代码文件调用

而普通函数,默认是extern 的,也就是说,可以被其他代码文件调用该函数

在函数的返回类型前 加上static ,函数就被定义成为静态函数。

普通函数的定义和声明默认情况下是 extern的,但静态函数只是在声明它的文件中可见,因此可以避免在其他源文件中引起错误,

从以上分析可以看出,把局部变量改变为静态变量后是改变了他的存储方式即改变了他的生存期。

只在当前源文件中使用的函数应该说明为内部函数,内部函数应该在当前源文件中说明和定义。

对于在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

合同风险防控的关键点有哪些?

2023-10-14

什么是智能控制系统?

2023-10-14

项目进度用什么图?

2023-10-14

最新文章NEW

关键字测试用例怎么编写?

2023-10-14

物联网的优势是什么?

2023-10-14

什么编程语言非常适合在数学领域?

2023-10-14

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>