static才是对代码的提升

static的作用有如下三条:

1):隐藏。

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

一个是a.c,另一个是main.c。

下面是a.c的内容
<pre lang="c" escaped="true">
char a = ‘A‘ // global variable
void msg()
{
printf("Hello\n");
}
</pre>

你可能会问:为什么在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,某些时候这一特点可以减少程序员的工作量。

&nbsp;

最后对static的三条作用做一句话总结。首先static的最主要功能是隐藏,其次因为static变量存放在静态存储区,所以它具备持久性和默认值0。

下面是main.c的内容

除了头文件,需要声明函数:
<pre lang="c" escaped="true">
void msg();
int main(void)
{
extern char a; // extern variable must be declared before use

printf("%c ", a);

(void)msg();

return 0;
}

</pre>

时间: 2024-10-16 13:30:31

static才是对代码的提升的相关文章

Guava 教程1-使用 Google Collections,Guava,static imports 编写漂亮代码

文章转载自:http://my.oschina.net/leejun2005/blog/172328 目录:[ - ] 1-使用 GOOGLE COLLECTIONS,GUAVA,STATIC IMPORTS 编写漂亮代码 1.Google Collections一览 2.操作lists和maps 3.静态导入和Eclipse模板 4.Guava走马观花 2-深入探索 GOOGLE GUAVA 库 1.The Guava CharMatcher 2.Joiner and Splitter 3.W

关于代码效率提升的方法心路历程(购物车)

关于代码效率提升的方法心路历程(购物车) 给为园友们,大家好,最近一直解决执行提速,分析老代码的逻辑并提出优化方案,在这个过程中发现了很多不好的习惯,导致很多程序逻辑执行效率低下,现在将其总结一下,如果大家觉得有参考意义,就看一下,如果觉得有问题,多多指点,如果觉得写的不好,也勿喷,谢谢! 案例分析: 关于购物车效率的提升,在优化前,购物车需要3-5分钟才能够查询出来数据,并且购物所有商品全部刷新重新渲染.这个购物车计算价格的代码还是一个工作20年左右的前辈写的,并且找了很久的优化方案(只局限在

能盈利的代码,才是好代码——参股新三板

能盈利的代码,才是好代码. 代码 名称 参股公司 参股比例% 000008 神州高铁 拓控信息 100.00 002307 北新路桥 新疆鼎源   600064 南京高科 臣功制药   600282 南钢股份 钢宝股份   603598 引力传媒 九合互动   601901 方正证券 方正中期 90.62 002465 海格通信 摩诘创新 90.00 600096 云天化 纽米科技 88.67 000551 创元科技 苏州电瓷 86.42 000507 珠海港 港昇公司 85.35 600839

C#winform调用外部程序,等待外部程序执行完毕才执行下面代码

1.简单调用外部程序文件(exe文件,批处理等),只需下面一行代码即可 System.Diagnostics.Process.Start(“应用程序文件全路径”); 2.如果要等待调用外部程序执行完毕才执行下面代码,只需要在后面加上WaitForExit()方法 System.Diagnostics.Process.Start(应用程序文件全路径).WaitForExit(); 3.另一种方法:使用实例化方法不使用静态方法 1 Process process = new Process(); 2

java学习--基础知识进阶第一天--static静态关键字、代码块

今日内容介绍 u 知识回顾 u static静态关键字 u 代码块 第1章 知识回顾 1.1 方法的回顾 1.1.1 案例代码一: package com.itheima_01; /* * 需求:定义一个方法求两个数的和,并在主方法中调用 * * 方法:类中的一段具有特定功能的程序,提高了代码的复用性和可维护性 * 定义格式: * public static 返回值类型(没有返回值写void) 方法名(参数类型 参数名,参数类型 参数名2) {//形参 * 方法体; * } * 调用方式: *

“整洁可用”的代码才算是好代码

之前有人问我,什么样的代码才算是好代码?一时语塞,百度后,我觉得这个是我觉得我想要的结果,来源https://wenku.baidu.com/view/8646287bf56527d3240c844769eae009581ba2e8.html 原文地址:https://www.cnblogs.com/suola/p/9546682.html

究竟怎样写代码才算是好代码

今天让我们来谈谈代码吧.代码重要吗?当然,代码就是设计(Jack W.Reeves, 1992):代码是最有价值的交付物.我们需要好代码吗?在给"好代码"下个定义之前,这个问题无法回答.那么,究竟什么是好代码? 看下面这段英文解释: 'Good code' is code that works, is bug free, and is readable and maintainable. Some organizations have coding 'standards' that a

团队代码质量提升之我见

一.项目代码问题现状 二.代码问题原因分析 三.何为代码质量 四.质量提升之策 五.部门实施之路 六.代码保障的辅助工具 一.代码问题: 1.没有代码注释: 2.没有代码相关的设计或者结构文档: 3.函数代码行太多: 4.类.函数功能不单一: 5.内存泄露风险较大: 6.逻辑混乱,很难看懂: 7.硬编码较多: 8.接口定义不清晰,输入输出界定不清楚: 9.垃圾代码较多: 二.原因分析 1.项目成员技能不足: 2.项目时间比较赶: 3.项目代码走读.代码评审控制效果不好: 4.代码规范未统一: 5

java中静态代码块(static{...}),局部代码块(方法中{...}),构造代码块(类中{...})区别。

1.局部代码块: 格式:在方法中{局部代码块执行语句} 局部代码块,又叫普通代码块.它是作用在方法中的代码块. 作用:是控制变量的生命周期. 在程序中当我们定义完成一个局部变量x之后,并且在接下来的代码中,不想再用到它时,那么就没必要让x在内存中继续占用空间.因此就有了局部代码块. 2.构造代码块: 格式:在类中{构造代码块执行语句} 作用:就是给所有对象进行初始化. 注意几点: 1)每次创建对象他都会执行. 2)构造代码快是优于构造函数执行. 3)构造代码块与构造函数的区别是:构造代码块是给所