`

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关键字的作用是指在C语言中,static关键字对变量和函数的存储期和作用域的影响。 一、C语言中的存储期 在C语言中,变量和函数可以分为两种存储期:自动存储期和静态存储期...

    C语言关键字 C语言关键字 C语言关键字

    在本篇文章中,我们将深入探讨C语言中的关键字及其用法。C语言作为一种广泛使用的编程语言,在软件开发领域占据着极其重要的地位。理解并熟练掌握C语言的关键字是学习该语言的基础,也是成为一名合格程序员的...

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

    在C语言中,`static`关键字是一个非常重要的修饰符,它可以用于变量和函数,具有不同的作用和含义。本文将详细探讨`static`关键字在C语言中的几种主要用法。 1. **静态局部变量 (Static Local Variables)** - **...

    c语言中static_用法总结

    ### C语言中Static关键字的用法总结 #### 一、引言 在C语言中,`static`关键字是一个非常重要的概念,它可以帮助开发者更好地管理内存和控制变量的作用域。本文将详细介绍`static`关键字的不同用途及其对程序行为...

    C语言中的关键字

    ### C语言中的关键字详解 #### 一、概述 C语言是一种广泛应用的编程语言,它具有高效性和灵活性。在C语言中,**关键字**是预定义的词汇,它们具有特殊的含义和功能,不能用作标识符(如变量名、函数名等)。C语言...

    C语言中static的作用.pdf

    标题和描述表明这篇文档讨论的是在C语言中static关键字的作用。Static是一个在C语言程序设计中非常重要的关键字,它具有多种含义,分别涉及变量的存储期、链接属性和函数内部变量的使用。 在C语言中,static关键字...

    c语言32个关键字.pdf

    static关键字指定变量为静态存储周期,这意味着变量的值在程序的整个执行期间保持不变,并且在函数外部也可访问。extern关键字用于指定变量或函数在别的文件中定义,意味着该变量或函数的作用域可以跨越文件。...

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

    Static关键字是C语言中的另一个重要关键字,它可以用来修饰变量、函数和函数参数。 在面向过程编程中,Static关键字可以用来修饰函数体内的变量、函数体外的变量和函数。 1. 修饰函数体内的变量 Static关键字可以...

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

    1. 修饰全局变量:当static关键字修饰全局变量时,该变量只能在本文件中使用,否则可以在整个工程中使用。在静态存储区,默认值为0。 例如: ```c static int x = 10; ``` 在上面的例子中,变量x只能在当前文件中...

    C语言32个关键字九种控制语句34种运算符

    static关键字用于声明静态变量。静态变量的生命周期从程序开始起一直到程序结束,并且即使使用完毕后,它的值仍旧不还原。例如:static int name=1; 三、extern关键字 extern关键字用于声明全局变量。全局变量可以...

    C语言中的关键字说明

    ### C语言中的关键字说明 C语言作为一门历史悠久且功能强大的编程语言,在计算机科学与软件开发领域扮演着举足轻重的角色。它不仅为其他高级语言提供了基础架构的灵感,而且在系统级编程、嵌入式系统及游戏开发等...

    C语言32个关键字GET进行曲.docx

    总结:本文详细介绍了C语言中的几个重要的关键字,包括`extern`、`auto`、`register`、`static`以及`const`和`signed`/`unsigned`关键字的使用方法和注意事项。这些关键字对于理解和编写高质量的C语言程序至关重要。

    嵌入式C语言重要的关键字

    `static`关键字就是这样一个关键元素,它在C语言中扮演着多面手的角色,尤其是在嵌入式系统中有着特殊的用途。 首先,`static`关键字用于函数内部的变量声明时,它使得变量的生命周期超越了函数的调用边界。在标准C...

    C语言32个关键字含义特别说明

    C语言中包含了32个关键字,这些关键字分为几个主要的类别,包括数据类型关键字、复杂类型关键字、存储级别关键字、流程控制关键字和跳转结构关键字。以下是对这些关键字含义的详细说明。 ### 数据类型关键字 这些...

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

    下面我们将深入探讨在C语言中经常使用的几个关键字:`#define`(宏定义)、`static`(静态变量)、`const`(只读变量)和`volatile`(易变变量)以及`typedef`。 一、宏定义(#define) 宏定义是C语言中的预处理器指令,...

    统计txt文档里的C语言关键字

    C语言的关键字包括但不限于以下这些:`auto`、`break`、`case`、`char`、`const`、`continue`、`default`、`do`、`double`、`else`、`enum`、`extern`、`float`、`for`、`goto`、`if`、`inline`、`int`、`long`、`...

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

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

    C语言 32个关键字统计

    在深入探讨C语言的32个关键字之前,我们先来明确一下什么是关键字。...以上便是C语言中的32个关键字及其基本用途,掌握这些关键字是学习和使用C语言的基础。通过合理运用这些关键字,可以构建出复杂而高效的程序结构。

Global site tag (gtag.js) - Google Analytics