首页

文章

c语言 static 作用范围是什么呢?

发布网友 发布时间:2022-03-25 09:12

我来回答

4个回答

懂视网 时间:2022-03-25 13:33

static变量的作用是希望函数中的局部变量的值在函数调用结束后不消失而继续保留原值,即其占用的存储单元不释放,在下一次再调用该函数时,该变量已有值(就是上一次函数调用结束时的值)。这时就应该指定该局部变量为“静态局部变量”,用关键字static进行声明。
  
  C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括一些类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。
  
  诞生于美国的贝尔实验室,由D M Ritchie以B语言为基础发展而来,在它的主体设计完成后,Thompson和Ritchie用它完全重写UNIX,且随着UNIX的发展,c语言也得到不断的完善。为利于C语言的全面推广,许多专家学者和硬件厂商联合组成C语言标准委员会,并在之后的1989年,诞生第一个完备的C标准,简称C89,也就是ANSI c,现在的C语言标准为2011年发布的 C11。

热心网友 时间:2022-03-25 10:41

在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。
(1)第一个作用:隐藏。
当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。
下面是a.c的内容
#include<cstdio>增加这条语句
char a = ‘A‘; // global variable
void msg()
{
printf("Hello\n");
}
你可能会问:为什么在a.c中定义的全局变量a和函数msg能在main.c中使用?前面说过,所有未加static前缀的全局变量和函数都具有全局可见性,其它的源文件也能访问。此例中,a是全局变量,msg是函数,并且都没有加static前缀,因此对于另外的源文件main.c是可见的。
如果加了static,就会对其它源文件隐藏。例如在a和msg的定义前加上static,main.c就看不到它们了。利用这一特性可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。Static可以用作函数和变量的前缀,对于函数来讲,static的作用仅限于隐藏,而对于变量,static还有下面两个作用。
(2)static的第二个作用是保持变量内容的持久。存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和static变量,只不过和全局变量比起来,static可以控制变量的可见范围,说到底static还是用来隐藏的。
(3)static的第三个作用是默认初始化为0。其实全局变量也具备这一属性,因为全局变量也存储在静态数据区。在静态数据区,内存中所有的字节默认值都是0x00,某些时候这一特点可以减少程序员的工作量。
最后对static的三条作用做一句话总结。首先static的最主要功能是隐藏,其次因为static变量存放在静态存储区,所以它具备持久性和默认值0。
下面是main.c的内容
除了头文件,需要声明函数:void msg();
int main(void)
{
extern char a; // extern variable must be declared before use
printf("%c ", a);
(void)msg();
return 0;
}

热心网友 时间:2022-03-25 11:59

static的作用有三条。

一、第一个作用:隐藏。

当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。

你可能会问:为什么在a.c中定义的全局变量a和函数msg能在main.c中使用?前面说过,所有未加static前缀的全局变量和函数都具有全局可见性,其它的源文件也能访问。此例中,a是全局变量,msg是函数,并且都没有加static前缀,因此对于另外的源文件main.c是可见的。

如果加了static,就会对其它源文件隐藏。例如在a和msg的定义前加上static,main.c就看不到它们了。利用这一特性可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。Static可以用作函数和变量的前缀,对于函数来讲,static的作用仅限于隐藏,而对于变量,static还有下面两个作用。

二、static的第二个作用是保持变量内容的持久。

存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和static变量,只不过和全局变量比起来,static可以控制变量的可见范围,说到底static还是用来隐藏的。

三、static的第三个作用是默认初始化为0。

其实全局变量也具备这一属性,因为全局变量也存储在静态数据区。在静态数据区,内存中所有的字节默认值都是0x00,某些时候这一特点可以减少程序员的工作量。

请添加详细解释

热心网友 时间:2022-03-25 13:34

当前文件内
出师表高锰酸钾有画面了吗 2021年幼儿园新学期致家长一封信 电脑屏幕一条黑线怎么办? 销售代理商销售代理商的特点 商业代理商业代理的特征 如何看微信有没有开通微众银行 为什么微众没有开户 微众银行怎么开户 微众银行APP开户流程是什么? 唐古拉山海拔唐古拉山海拔是多少 怎么看待取消跳广场舞的人的退休金 如何选购新鲜的蓝田水柿? 恭城水柿柿树作用 创维洗衣机使用教程 创维全自动洗衣机怎么使用 自动开门器 狗羊属相婚姻相配吗 3岁的小孩不会说话怎么办 3岁孩子不会说话,应该挂什么科? 3岁小孩不会说话正常吗 鹿茸炖乌鸡怎么做? 新型冠状肺炎吃什么药可以预防 冰箱上电后一直响 食品生产许可证编号开头为“ G”。 库存过期香精 猎狐点卡平台经营范围 电影代理靠谱吗 兄弟三人,有什么好的QQ网名 租赁合同书范本简单版 简单房屋出租协议书模板 简单明了租房合同范本 租房合同书免费下载(实用6篇) 出租房屋合同 简洁的房屋租赁合同范本 阳光人寿保险是骗人吗? 三胎政策有那些配套措施有哪些 ...法院也立案了,可被没有可执行的财产怎么办,我的工资还能要回来吗... 离婚后析产案法院强制执行,对方说没有钱,我该怎么办 澳门为什么叫澳门? 新能源老年代步车锂电池 如何为职务侵占罪进行辩护 职务侵占如何辩护 职务侵占罪有效辩护点有哪些 miui11开发者选项在哪_小米miui11开发者选项在哪 查询考研成绩需要什么 考研查分前要做什么 考研查询需要什么证件 研究生什么专业好 什么专业的研究生最好 考研究生什么专业好 研究生学什么专业 宝石花的养殖方法介绍 宝石花怎么养才长得好 java中static作用是什么? C语言里面静态变量static是什么作用啊? C语言static的作用。 java中的static到底有什么作用? C语言中static是做什么用的? 为什么车载蓝牙连接上没有声音? 手机链接车载蓝牙后,微信语音没声音,语音电话也没声音。这是怎么回事? 手机连接蓝牙车载来微信没有提示音 万能的朋友圈,之前我手机连接车载蓝牙放歌,拍微信小视频音乐都不会断的?可是前两天开始就没声音为什么_问一问 车载蓝牙配对成功但没声音怎么办? 车载蓝牙和手机连接成功可是一点声音都没有是怎么回事? 苹果连着车载蓝牙拍视频怎么没声音 车载蓝牙吉利汽车微信语音没声音怎么回事 汽车蓝牙连接上但没声音 手机连接车载蓝牙时微信来视频语音电话时车载蓝牙没声 放歌 手机听筒出声怎么回事? 苹果11pro max在小车里放着歌发朋友圈怎么没有歌声音呢? 汽车连蓝牙没有声音怎么回事? 车载蓝牙没有声音怎么办? 手机音乐连接汽车发朋友圈怎么没有声音? 汽车蓝牙连接后微信语音没声音,!!!听歌打电话导航都正常声音,就微信没有 static 变量实际中有什么作用 c语言中static 到底有啥作用啊? c语言中变量前的static有什么用???? Java中static的作用? JAVA! static什么作用? static有什么用途 static关键字的作用是什么 java中的static有什么作用 C语言中由Static 定义的变量的作用范围 static的作用 static静态方法和变量的作用和好处?? java中static的具体作用是什么 ?举例说明 vivo手机怎么获取权限 vivo的手机怎么打开读取已安装应用信息的权限? VIVO手机怎么打开读取已安装应用信息的权限? vivox5从哪儿打开手机设备识别码权限 vivo y13的允许软件获取设备信息在哪儿设置 vivo手机怎样获得root权限 为什么我的手机获取不了权限 我的vivo手机 怎样获取vivo手机的root权限管理?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com