网站首页 > 技术文章 正文
与局部变量和全局变量的区别:
a.static全局变量和普通全局变量的区别在于static全局变量只初始化一次,这样做的目的是为了防止在其他文件单元被引用
b.static局部变量和普通局部变量的区别是static局部变量只被初始化一次,下一次运算依据上一次的结果值。
c.static函数与普通函数的区别在于作用域不一样,static函数只在一个源文件中有效,不能被其他源文件使用。
d.为什么static变量只初始化一次:
对于所有对象(不仅仅是静态对象),初始化都只有一次,而由于静态变量具有记忆功能,初始化后一直都没有被销毁,都会保存在内存区域内,所以不会再次初始化。
#include<stdio.h>
void fun(int i)
{
static int value=i++; //这条语句是定义语句
printf("%d\n",value);
}
int main()
{
fun(0);
fun(1);
fun(2);
return 0;
}
程序每次都输出0,是因为value是静态类型,只会定义一次,也就是说不管调用func()这个函数多少次,static int value = i++;这个定义语句只会在第一次调用的时候执行,由于第一次执行的时候i=0,所以value也就被初始化为0了,以后调用func()都不会再执行这条语句了。
e.在头文件中定义静态变量是否可行?为什么?
不可行,如果在头文件中定义静态变量,会造成资源浪费的问题,同时也可能引起程序错误,因为如果在使用了这个头文件的每个c语言文件中定义静态变量,按照编译步骤,在每个头文件中都存在一个静态变量,从而会引起空间浪费和程序错误,所以不推荐在头文件中定义任何变量,当然也包括静态变量。
猜你喜欢
- 2024-09-26 Java学习:基础(static、单例)(java里static用法)
- 2024-09-26 代码区、常量区、静态区(全局区)、堆区、栈区不得不了解
- 2024-09-26 “静态”之静——深入解析C++中的static关键字
- 2024-09-26 java基础3种变量类型(详解、区别)
- 2024-09-26 Java static关键字你了解多少?(java中static关键字有什么作用)
- 2024-09-26 再也不要说不知道static了(ip route-static命令详解)
- 2024-09-26 夯实基础:详解static关键字和5类场景应用
- 2024-09-26 Java学习:static 关键字概述(static关键字的作用 java)
- 2024-09-26 Java基础:static关键字作用总结(javastatic关键字详解)
- 2024-09-26 JAVA 泛型中的通配符 T,E,K,V,?你都弄懂了吗?我都总结在这
- 1514℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 573℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 513℃MySQL service启动脚本浅析(r12笔记第59天)
- 486℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 486℃启用MySQL查询缓存(mysql8.0查询缓存)
- 469℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 449℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 447℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (83)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)