惧留孙网

juliusun.com

在线教程 > C语言教程 > static应用之全局

static应用之全局

第 47/50 节 冥河C语言教程


static关键字根据情况不同,作用不同:1、描述全局变量或函数:被描述的对象不允许外部源文件通过extern关键字引用;2、作用于局部变量:不重新分配空间,保存上一次更改,前面 static应用之全局部 讲过。

本节主要讲述第1种描述全局变量或函数用法。

被static关键字描述的变量称作静态变量,函数称为静态函数,static关键字用法简单,在函数或变量的类型名前加上static关键字,并用空白字符与类型隔开即可,如:static int i;


  1. static int i = 99 ; //静态int类型变量i初始值为99
  2. static void show_hello() //静态函数,声明时记得同样加上static修饰符
  3. {
  4. printf("Hello");
  5. }

第一个作用描述全局变量或函数,与一节内容有联系。任何全局变量或函数,可以在其它源文件中通过extern关键字引用,static关键字描述除外。

例编译器编译一个项目中的两个文件,a.c和b.c,a.c定义全局变量代码如下:


  1. static int i = 99 ; //静态int类型变量i初始值为99

b.c通过extern关键字引用a.c的全局变量i会出现错误,代码如下:


  1. extern int i ; //编译链接会出现错误,如vc报错为无法链接的外部符号

static经常使用的情况有多种,如:保护本源文件全局变量或函数的私密性、多个源文件存在同名函数或全局变量时通过static排除extern引用干扰。

多个源文件存在同名函数或全局变量时通过static排除extern引用干扰,如一个项目中有3个源文件分别是a.c、b.c和c.c,a.c和b.c都定义了全部变量 i ,c.c需要引用a.c中的i,如果没有static关键字,那么c.c通过如下代码:


  1. extern int i ; //编译链接会出现错误,通常是符号重定义,a.c和b.c中均有i全局变量

为了保证c.c正常引用a.c中的外部变量 i,除了修改b中的变量名之外,可以在b.c中用static修饰i,使i仅限本文件使用,编译器就会顺利找到a.c中的变量 i 了。毕竟,代码量大以后,修改变量名可能导致不必要的麻烦。

由于static关键字描述全局对象时,用法及作用比较简单,本节不在详细介绍,下一节介绍其描述局部变量的作用。

作者:冥河 QQ:3304576112
交流QQ群:554701039 C语言讲课群
本教程内容由本站保留版权,请勿复制传播
抖音
©2015-2024 惧留孙网 juliusun.com

京ICP备15039193号-1

首页 教程 下载 文章 聊天 我的