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

函数:static和extern

0.前言

在正式开始之前先说作用域和生命周期

作用域:

作用域有分为局部变量和全局变量

局部变量:一个变量仅在其中一段代码内起作用

全局变量:所有的代码都可以使用这个变量

生命周期:

生命周期是一个代码从运行开始到结束为一个生命周期,局部变量的生命周期为作用域开始到局部的作用域结束,全局变数的生命周期为整个代码的开始到结束

1.extern

extern是专门用来声明外部符号的

如果没有使用extern,想要使用外部符号运行时会报错

2.static

static可以用来修饰:

局部变量

全局变量

函数

2-1修饰局部变量

我们先写一段代码:

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

}
int main()
{
	int a = 0;
	for (a = 0; a <= 10; a++)
	{
		test();
	}
	return 0;
}

这段代码当我运行时,会打印出10个2,因为当进入void test运行时,其作用域只在void test里运行,出了作用域生命周期结束,自然只出现10个2

这次我们加上static

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

}
int main()
{
	int a = 0;
	for (a = 0; a <= 10; a++)
	{
		test();
	}
	return 0;
}

则会打印数字2到12

至于为啥会这样是因为经过static修饰过后局部的变量从栈区储存到了静态区,变得跟程序生命周期一样长,只要代码运行结束变量才销毁,内存回收,但作用域是不变的

2-2修饰全局变量

再来写一段代码:

add.c:

int a = 5000;

test.c

extern int a;

void test()
{
	printf("%d\n", a);
}
int main()
{
	test();
	printf("%d\n", a);
	return 0;
}

如果再add.c里加上static呢?

static int a = 5000;

会直接报错

当static去修饰全局变量时那个全局变量只能在那个文件内使用,函数同理

2-3修饰函数

在来一段代码:
add.c

int test(int x, int y)
{
	return x * y;
}

test.c

int main()
{
	int a = 0;
	int b = 0;
	scanf_s("%d%d", &a, &b);
	int c = test(a,b);
	printf("%d", c);
	return 0;
}

以上代码运行都没有任何问题,但是add.c加上static会发生什么事呢?

static int test(int x, int y)
{
	return x * y;
}

会直接报错,和修饰全局变量的结果一样

制作不易,赏个赞吧!

相关文章:

  • 3 通过图形化方式创建helloworld
  • QML输入控件: TextField(文本框)的样式定制
  • 408 计算机网络 知识点记忆(3)
  • mysql JSON_ARRAYAGG联合JSON_OBJECT使用查询整合(数组对象)字段
  • “钉耙编程”2025春季联赛(2)题解(更新中)
  • 在 Cloud Run 上使用 Gemini API 构建聊天应用
  • linux 服务器创建服务器启动后服务自启动
  • 突破反爬困境:SDK开发,浏览器模块(七)
  • 汇编学习之《标志寄存器》
  • 音视频基础(图像的基础概念)
  • 5.2.1 WPF 通过ItemControl自己做柱状图
  • 英飞凌 TC3xx功能安全开发-MONBIST
  • Redis:List 类型 内部实现、命令及应用场景
  • 探秘Transformer系列之(21)--- MoE
  • 微前端实现方案对比Qiankun VS npm组件
  • EviMed:左手综述内容,右手参考文献!三步产出可溯源的万字医学综述!
  • python系统之综合案例:用python打造智能诗词生成助手
  • 【Python使用】嘿马python数据分析教程第1篇:Excel的使用,一. Excel的基本使用,二. 会员分析【附代码文档】
  • hadoop集群配置-scp命令
  • CTF类题目复现总结-[MRCTF2020]Hello_ misc 1
  • 哪里有建设好的网站/今日新闻十大头条内容
  • html5做图网站/凡科建站怎么样
  • 自己架设的传奇怎么做网站/百度快速收录办法
  • 泉州网站建设方案优化/营销渠道的概念
  • 网站建设方案编写人/站长工具站长之家官网
  • mac page转换wordpress/windows优化大师官方网站