RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
小记static关键字的用法-创新互联
文章目录
  • 前言
  • 一、修饰变量
    • C代码
    • 运行结果
  • 二、修饰函数
  • 总结

创新互联建站-专业网站定制、快速模板网站建设、高性价比安次网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式安次网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖安次地区。费用合理售后完善,10多年实体公司更值得信赖。
前言

偶然间看到了陈正冲老师的《C语言深度剖析》,突然觉得自己该重拾C语言了(其实是书写得太好了,忍不住想学)。在原来已经学过一点点的基础上打算再补充一些,可能会有一系列笔记吧,立个flag争取在寒假之前把这本书看完。


一、修饰变量

根据定义范围的不同,变量分为静态局部变量和静态全局变量,但它们都存在内存的静态区。
(1)静态全局变量:作用域仅限于变量被定义的文件中(如.c和.h文件),其他文件即使用 extern 声明也没法使用。作用域是从定义之处开始,到文件结尾处结束,在定义之处前面的那些代码行也不能使用它。若在定义之前使用需在前面加extern,所以一般直接在文件顶端定义即可。
(2)静态局部变量:在函数体里面定义的,就只能在这个函数里使用。若函数结束运行,则在函数里面定义的值仍会保留在内存的静态存储区

C代码
#includestatic int j = 0;//静态全局变量 

void fun1(void)
{static int i = 0;//静态局部变量 
	i++;
	printf("func1:%d \t",i);
}

void fun2(void)
{int j = 0;
	j++;
	printf("func2:%d",j);
}

int main()
{for(int k=0; k<10; k++)
	{fun1();
		fun2();
		printf("\n");
		printf("-----------------------");
		printf("\n");
	}
	return 0;
}
运行结果

在这里插入图片描述
经过仔细一想,原本全局变量的意思是在该文件夹(.c/.h)中使用,而将静态全局变量去掉static后变成全局变量结果是一样的不会变即j还是等于1。而局部变量的生存域是在函数中,只能在函数中使用,函数使用完之后是会销毁的,若在其他地方使用会报错提醒你没有定义该变量;在加上static后,则将值存储到了静态存储区,是不是可以认为间接的变为了“全局变量”呢?但是作用域仅在函数中。这样一来就明白了

二、修饰函数

函数前面加static修饰就变成了静态函数,即对函数的作用域仅局限于本文件。不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名。就算同名也没关系,因为在不同的文件中即有不同的作用域。
第一种含义:表示退出一个块后仍然存在的局部变量
引申的第二种含义:用来表示不能被其它文件访问的全局变量和函数。

总结

学习到了static的用法,但是还要在实际中多运用才能熟悉。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前文章:小记static关键字的用法-创新互联
文章分享:http://lswzjz.com/article/pepcd.html