77百科网
当前位置: 首页 生活百科

static用法c语言(最全面详实的Static应用)

时间:2023-06-29 作者: 小编 阅读量: 2 栏目名: 生活百科

在C程序开发过程中,很多人都忽视了静态变量和静态函数重大作用。静态类型根据static修饰的对象,可分为两大类:在函数前面的和在变量前面的。建议要这样的函数前要加static,表明此函数的作用范围是本文件,也只能在本文件中使用,当然头文件中也是不能出现这个函数申明的,否则会报错。现在我们在add前面加上static试试。同一项目中的不同文件含有同名静态变量允许存在,其作用域与静态函数一致。

在C程序开发过程中,很多人都忽视了静态变量和静态函数重大作用。笔者就遇到一位资深程序员,看到我写的代码里有static标识,很好奇,我告诉他后,他立马用到他程序里面了~~。

静态类型

根据static修饰的对象,可分为两大类:在函数前面的和在变量前面的。

1. 放在函数前面

在实际项目中,我们经常会定义这样一些小函数,它们只被定义他们的那个文件里的其它函数调用,而不会被其它文件里的函数调用,即局部函数。建议要这样的函数前要加static,表明此函数的作用范围是本文件,也只能在本文件中使用,当然头文件中也是不能出现这个函数申明的,否则会报错。

来看一个例子,同一个项目包含file1.c和file2.c

//file1.c中

int add(int x, int y) { return (x y); } void int funFile1(void) { return add(1, 2); }

//file2.c中

float add(float x, float y) { return (x y); } void float funFile2(void) { return add(1.1, 2.1); }

很明显,编辑时会报add函数重复定义的错误。现在我们在add前面加上static试试。

//file1.c中

static int add(int x, int y) { return (x y); }

//调用本文件中static函数

void int funFile1(void) { return add(1,2); }

//file2.c中

static float add(float x, float y) { return (x y); }

//调用本文件中static函数

void float funFile2(void) { return add(1, 2); }

编辑通过,完全正确。说明在同一个项目中,不同文件中含有相同名字的static函数是允许的。这个功能在多人合作的大项目中,特别有用,只要大家定义好接口函数,可以极大的避免同文件名的错误。

2.放在变量前面

分在函数内和在函数外两种情况,关于static变量在内存中的位置,详见关于内存堆栈

2.1 函数内的static变量

函数内的static变量只能被本函数调用,其特点是只能被初始化一次,而且,退出函数后其值会保持,限于函数内的“全局”变量.

//每调用一次,val值增1 void int getCount(void) { //编辑时完成初始化值为1 static int val=1; val; return val; }

2.2 函数外的static变量

定义在函数外的static变量只能被本文件中的函数使用,不能被其它文件使用。来看例子,同一个项目包含file1.c和file2.c

//file1.c

//编辑时完成初始化值为1//与file2中的val没关系 static int val=1; void int incCount(void) { val; return val; }//静态函数 (限file1.c) static void int decCount(void) { val--; return val; }

//file2.c

//编辑时完成初始化值为10//与file1中的val没关系 static int val=10; void int inc(void) { val; return val; }//静态函数 (限file2.c) static void int decCount(void) { val--; return val; }

编译通过,完全正确。同一项目中的不同文件含有同名静态变量允许存在,其作用域与静态函数一致。

码字不易,谢谢关注,你的点赞是我最大的动力。共享知识,共同成长!

    推荐阅读
  • 缅因库恩猫和缅因猫有啥区别(缅因库恩猫虎斑系列)

    缅因库恩猫虎斑系列MaineCoon缅因库恩猫虎斑系列简称“缅因猫”,因产于美国缅因州而得名,是北美自然产生的第一个长毛猫品种花色多达75种,分纯色、双色、三色、虎斑、烟色及阴影色,其中棕虎斑最为经典缅因猫的起源缅因州。

  • 类风湿免疫病的症状 类风湿免疫病的症状是什么

    类风湿性关节炎是一种以对称性多关节炎为主要病变的自身免疫性疾病。95%以上的类风湿性关节炎患者有晨僵。晨僵可见于多种关节炎,但以类风湿性关节炎最为突出,其持续时间往往超过半小时甚至一小时。类风湿性关节炎需要对症治疗,首先是非甾体类抗炎药。这些药物具有抗炎镇痛作用,可缓解类风湿性关节炎引起的局部疼痛症状。

  • 赞美女孩很美诗句(您会用古诗词赞美美丽的姑娘吗)

    “魔鬼身材,天使面孔。”之子于归,宜其室家。尤其是“灼灼”二字,真给人以照眼欲明的感觉。若非群玉山头见,会向瑶台月下逢。将翱将翔,佩玉琼琚。——《有女同车》有位姑娘和我同在一辆车上,脸儿好像木槿花开放,身佩着美玉晶莹闪亮。

  • 鹿鼎记张一山(张一山怎么还没裂开)

    Sir忘记这是今年第几部国剧被骂上热搜了。步调如此统一,差评如此迅猛。由此可见,4分以下,只是技术上公认的烂。灵魂人物韦小宝,更是凭借小混混屌丝逆袭,一路升官发财抱得美人归,成为流行文化中的男性偶像。张一山一度被誉为国内目前最适合演韦小宝的演员。不可否认,张一山的表演风格的确跑偏。根据国家广播电视总局给出的信息来看,剧集经过两次调整,至少删掉11集。除了Sir开头提到的,剧情上缩水导致人物扁平。

  • 字体设计笔画演变(汉字的笔画结构)

    汉字的笔画是汉字字体构成的基本元素,字体是先由笔画组成部首后,再由部首组成完整的字体造型的。笔画的形状一般称为笔形,因笔形不同在汉字中会产生出许多各异的字形。在汉字结构里,笔形的塑造是随设计创意的萌发而形成的。字体设计是指通过对一个个字体结构的细部进行处理,使汉字的笔形既能构成统一的形象,又富有一定的想象力。笔画连接字体内部的笔画变化连接或者字与字之间进行笔画的连接变化,是常见的汉字设计形式之一。

  • 杀蚊子最好的方法(杀蚊子最好的方法简述)

    以下内容大家不妨参考一二希望能帮到您!杀蚊子最好的方法灭蚊子最好的方法是洗衣粉+肥皂水。关上门窗,在窗前放置一个盆子,盆中加点混合洗衣粉的水,第二天,水盆中就会有一些死去的蚊子。每天持续使用这种方法,几乎可以不用再喷杀虫液去杀蚊子了。而且蚊子也会越来越少。从而就达到了灭蚊的效果。

  • 陈妍希曝入行被骂(杨采钰袁姗姗陈妍希谁被骂最惨)

    看来,如果接到争议角色,要有陈妍希这样心态,才能不怕观众的冷嘲热讽。后来剧组传出杨颖因为怀孕只能用替身,网友依旧不依不饶去骂她。后来,杨颖自曝曾被骂到患抑郁症,每天晚上睡不着。事后,张檬自己也在反省,认为自己是邻家女孩形象,所以才被骂惨。该片除了李凯馨演技与气质备受质疑,部分观众表示,对于片中聂小倩和宁采臣之间爱情产生的速度之快也感到非常不适应,故事与特效也不够水准。

  • 又软又香的饼怎么做(这个饼做法简单)

    发面饼柔软好消化,老少皆宜,一日三餐都可以吃。特别是发面小饼,吃法比较多,做成菜夹馍或者肉夹馍,作为早餐来吃,省心又省事。我家爱吃面食,所以发面饼也是我平日里常做的。或者从中间切开,夹上自己喜欢的菜,做成菜夹馍、肉夹馍,味道更赞。2,制作发面饼的面团要稍微软一点,面粉和水的比例约为10:6,这样的面团操作起来不粘手,烙好的饼也更柔软。在吃的时候放在电饼铛里热一热就好,特别省事。

  • dnf团本都可以单人吗(回归没有装备无法进团)

    顺带一提,现在还处在回归活动期间,勇士们即使身上什么装备都没有,也可以在挑战希洛克团本的时候选择小队模式。回归活动为回归勇士准备了专属的小队APC,可以帮助我们轻松攻略希洛克的小队模式。裂缝注视者、终末的引导是新版本的深渊,区别于智慧的引导,我们在这两个副本里面不仅可以获得100级常规史诗、神话装备,还有几率获得希洛克装备。

  • 怎么样更改证件照的背景颜色(手把手教你变证件照尺寸)

    手把手教你变证件照尺寸改背景色】求职接近尾声,快毕业的你拿到心仪offer了吗?除了做简历,生活中需要证件照的地方也很多。毕业证、身份证、工作证、出入证、旅游签证…懒得为不同底色、不同尺寸的照片,一遍遍去照相馆?#拍出貌美证件照#改尺寸、背景色指南↓↓有用,转起留存!