当前位置: 首页 > news >正文

C语言(22)---------->函数(5)

static与extern是面试的高频问点,本文章对此做出介绍。在介绍之前,建议了解变量的作用域与生命周期。

建议参考:

C语言番外篇(5)-------------->作用域与生命周期-CSDN博客

一、static修饰局部变量

static是C语言中的一个关键字,它的中文是静态的,那它到底有什么作用呢?下面我通过两个例子对此进行介绍,希望有助于你对static的理解。

未使用static时:

#include <stdio.h>

void test(void)
{
	int a = 1;
	a++;
	printf("a=%d\n",a);
}
int main()
{
	int i = 0;
	for (i = 0; i < 5; i++)
	{
		test();
	}
	return 0;
}

运行结果:

原因:a是局部变量,此处进入函数创建,出函数时销毁。

 为什么是这样呢?让我们从内存角度进行分析:

 再看看反汇编:

 使用static时:

#include <stdio.h>

void test(void)
{
	static int a = 1;
	a++;
	printf("a=%d\n", a);
}

int main()
{
	int i = 0;
	for (i = 0; i < 5; i++)
	{
		test();
	}
	return 0;
}

 运行结果: 

 我们可以发现:使用static之后,a似乎带有了记忆了,能够记住它的值,这是因为此时a出函数时不再销毁。 

 为什么是这样呢?请看内存:

 

这个原因是什么呢?

(1)放在静态区的变量的生命周期比较长,和程序的生命周期一样。

(2)static修饰的局部变量本质上影响了变量的存储类型

(3)一个局部变量是存放在栈区的,但是被static修饰之后就存放在静态区了。

(4)因为存储类型的变化,生命周期跟着变化,变长了。

那被static修饰后的变量作用域变化了吗?

作用域是不变的!只能在作用域中使用。

什么时候使用static修饰局部变量呢?

需要积累效果时使用static即可。

二、static修饰全局变量

static修饰全局变量主要用于多文件场景。

未使用static时:

运行结果:

使用static时: 

static修饰全局变量时:

(1)全局变量时具有外部链接属性的,在其他文件都可以使用。

(2)全局变量被static修饰之后,外部链接属性就变成了内部链接属性,就是这个全局变量只能在自己所在的.c文件中使用,其他文件时看不到的,本质上是作用域变小了。 

三、static修饰函数

static修饰函数时,与修饰全局变量是类似的。

例如:

未使用static修饰时:

使用static修饰时: 

static修饰函数时:

(1)函数具有外部链接属性

(2)但是函数被static修饰之后,外部链接属性这个函数只能在自己的.c文件中使用,其他文件即使声明了也不能使用。

 

相关文章:

  • PPT 小黑第16套
  • Blender常用快捷键的汇总
  • 基于大模型预测的急性横贯性脊髓炎诊疗方案研究报告
  • MHA集群
  • Springboot + minio
  • VSCode 本人常用快捷键对照:德语键盘 vs. 英语键盘
  • 大数定律详解
  • 单例模式:确保一个类只有一个实例
  • 基于大数据的电影情感分析推荐系统
  • OpenHarmony 5.0.0 Release
  • TypeError: Cannot convert object to primitive value
  • GB28181视频监控流媒体平台LiveGBS如何自定义收流端口区间以便减少收流端口数或解决端口冲突问题
  • STM32单片机+机智云APP远程WiFi控制灯开关和光照强度显示
  • linux---天气爬虫
  • 探索高性能AI识别和边缘计算 | NVIDIA Jetson Orin Nano 8GB 开发套件的全面测评
  • 易基因特异性R-loop检测整体研究方案
  • 【AI赋能】AI 工具生成视频教材:从创意到成品的全流程指南
  • 哈哈哈哈哈哈哈
  • 鸿蒙——实操开发自定义Hivigor插件并发布插件
  • Apache Log4j 2
  • 站长之家素材网站/做网站关键词优化的公司
  • 做推广的网站/百度推广代运营公司
  • 做爰网站名称/百度seo营销
  • 创造与魔法官方网站做自己/百度网站名称及网址
  • 手机app开发网站建设/十大最靠谱it培训机构
  • wordpress常用函数大全/长沙百度网站优化