`

C语言中的static关键字

 
阅读更多
c语言中的变量:
1.自动变量变量在执行到他的块尾时就超出了作用域,它在堆栈上分配的内存会被释放,以供另一个函数使用。它们是在声明时自动创建的,在程序退出声明它的块后自动删除。
2.全局变量。可以在任意位置访问,它的声明方式和一般变量相同,但是它的位置非常重要,这个位置决定了变量是否为全局变量。
3.静态变量。由static修饰的变量,只能在包含其声明的函数中可见,但它是一个全局变量,可以用全局变量的方式使用它。
 
static关键字:
在C语言中,static可以用来修饰局部变量,全局变量以及函数。在不同的情况下static的作用不尽相同。
(1)修饰局部变量
一般情况下,对于局部变量是存放在栈区的,并且局部变量的生命周期在该语句块执行结束时便结束了。但是如果用static进行修饰的话,该变量便存放在静态数据区,其生命周期一直持续到整个程序执行结束。但是在这里要注意的是,虽然用static对局部变量进行修饰过后,其生命周期以及存储空间发生了变化,但是其作用域并没有改变,其仍然是一个局部变量,作用域仅限于该语句块。
在用static修饰局部变量后,该变量只在初次运行时进行初始化工作,且只进行一次
如:
#include<stdio.h>  
void fun()  
{   
static int a=1; a++;   
printf("%d\n",a);  
}  
int main(void)  
{   
fun();   
fun();   
return 0;  
}  
 
程序执行结果为: 2  3
说明在第二次调用fun()函数时,a的值为2,并且没有进行初始化赋值,直接进行自增运算,所以得到的结果为3.
对于静态局部变量如果没有进行初始化的话,对于整形变量系统会自动对其赋值为0,对于字符数组,会自动赋值为'\0'.
(2)修饰全局变量
static对全局变量进行修饰改变了其作用域的范围,由原来的整个工程可见变为本源文件可见
对于一个全局变量,它既可以在本源文件中被访问到,也可以在同一个工程的其它源文件中被访问(只需用extern进行声明即可)。
如:
//有file1.c  
int a=1;  
file2.c  
#include<stdio.h>  
extern int a;  
int main(void)  
{  
printf("%d\",a);  
return 0;  
} 
 
则执行结果为 1
但是如果在file1.c中把int a=1改为static int a=1;
那么在file2.c是无法访问到变量a的。原因在于用static对全局变量进行修饰改变了其作用域的范围,由原来的整个工程可见变为本源文件可见。
(3)修饰函数
用static修饰函数的话,情况与修饰全局变量大同小异,就是改变了函数的作用域。
分享到:
评论

相关推荐

    C语言中static关键字的作用

    C语言中static关键字的作用

    C语言中static关键字的几种用法总结

    下面是我对static关键字在C语言中使用的一些总结,仅供参考。吾非大神,若有错漏之处,还请多多指点,大家一起交流学习。 正文 1. 变量 1.1 局部变量(函数体内) 局部变量定义在函数体内部 普通局部变量 是在任意一...

    c语言32个关键字意义和用法

    c语言32个关键字意义和用法 例如:define auto struct static extern

    C语言中static的作用.pdf

    在C语言中,关键字static有以下几种作用: 修饰局部变量: 当static用于函数内部的局部变量时,它使得该变量变为静态局部变量。静态局部变量只在第一次进入其所在函数时初始化一次,并且其生命周期从程序开始运行...

    C语言中关键字const、static、volatile、extern、auto、register的用法分析.doc

    C语言中关键字const、static、volatile、extern、auto、register的用法分析

    13. C语言中的关键字解析.docx

    在学习C语言和C++过程中,我们接触了许多的关键字,下边我们再来回顾一下使用频率比较高的几个关键字:#define(宏定义)、static(静态变量)、const(只读变量)volatile(直接从内存读数据)、typedef

    c语言中常用的几个关键字

    c语言常用的几个关键字简略解读

    C例子:static关键字

    该程序是我写的博客“一起talk C栗子吧(第一百二十六回:C语言实例--static关键字)”的配套程序,共享给大家使用

    C语言关键字的用法

    C语言中有32个关键字其中关于static与extern关键的用法详细介绍

    C++ static关键字详细应用指南

    在这里我们就为大家详细介绍一下C++ static关键字的使用方法,让大家进一步对这一语言有一个深入的解读。

    快速了解C语言静态关键字static的作用

    C语言中,static关键字修饰变量和函数 1、局部变量 2、全局变量 3、函数 修饰局部变量 1、用静态关键字static修饰的局部变量,在编译的过程中,会在数据区为该变量开辟空间,并对其进行初始化,如果代码中未对其进行...

    C语言关键字详解

    C语言关键字详解,很全面,希望能给大家带来帮助。

    C_gjz.rar_float

    C语言中的关键字 附录2 C语言中的关键字 C语言共有32个关键字: auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static...

    c语言终极面试宝典

    在C语言中,关键字static有三个明显的作用: 1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能...

    C语言中static的作用及C语言中使用静态函数有何好处

    想了解Java中static关键字的作用和用法详细介绍,请点击此处了解详情。 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条,分别是: 一是隐藏功能,对于static修饰的函数和全局变量而言 二是...

    c语言中static的用法详细示例分析

    static在c里面可以用来修饰变量,也可以用来修饰函数。先看用来修饰变量的时候。...彼此可以互相引用变量,但加入static修饰之后,只能被本文件中函数引用此变量。static对栈变量的修饰,可以认为栈变量的生命周期延长

    关于C++中的static关键字的总结

    C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用

    C++面试基础之static关键字详解

    主要给大家介绍了关于C++面试基础之static关键字的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

Global site tag (gtag.js) - Google Analytics