网站首页 > 基础教程 正文
与局部变量和全局变量的区别:
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-10-12 C++中override与overload的区别:深入解析与应用
- 2024-10-12 C++中的static_cast #程序代码 c++ static用法
- 2024-10-12 为什么C++ 单例局部static初始化是线程安全的?
- 2024-10-12 编码规范-C++:尽可能使用static_cast而不是reinterpret_cast
- 2024-10-12 C++类对象中的this指针与静态成员:理解与应用
- 2024-10-12 看完就会用的C++17特性总结 c++ 17 新特性
- 2024-10-12 C++|变量的类型系统和属性 c++变量有哪几种作用域
- 2024-10-12 C++友元和静态函数:如何用特殊的方式访问和管理类的成员
- 2024-10-12 C++中的static关健字 c static关键字
- 2024-10-12 C++静态成员变量和静态成员函数使用总结
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)