如果你去面试-C语言中static的作用

C 语言中 static的作用有三条

1,隐藏

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

如果加了static,就会对其它源文件隐藏。

利用这一特性可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。Static可以用作函数和变量的前缀,对于函数来讲,static的作用仅限于隐藏,而对于变量,static还有下面两个作用。

2,static的第二个作用是保持变量内容的持久。

存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和static变量,只不过和全局变量比起来,static可以控制变量的可见范围,

3,static的第三个作用是默认初始化为0

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

摘自http://wenku.baidu.com/link?url=UAcwv8ESTnz8Huyz1FShgQlOB4NnbpLoZB5qYRHl3n9ZcGuVbnRLXKhnhr_mTYxR34A1aHQXYfi9WLJNww5i2jz4yUHBrHfTBvbJznmkHGi

时间: 2024-10-10 10:16:28

如果你去面试-C语言中static的作用的相关文章

C语言中static的作用

(1)在函数体内,局部的static变量.生存周期为程序的整个生命周期:作用域却在定义了的函数体内.一个被声明为静态的变量在这个函数被调用过程中维持其值不变.因为它分配在静态存储区域,函数调用结束以后并不释放单元,但是在其他的作用域无法访问.当再次调用这个函数时,这个局部变量还存活,而且用在它的访问空间,因此访问的是上次调用后的值. (2)在文件模块内但在函数体外,一个声明为静态的全局变量可以被模块内的所有函数访问,但不能被模块外其他函数访问,它是一个本地的全局变量,限制静态全局变量的作用域.

在C语言中static的作用

1).一旦声明为静态变量,在编译时刻开始永远存在,不受作用域范围约束,但是如果是局部静态变量,则此静态变量只能在局部作用域内使用,超出范围不能使用,但是它确实还存在,还占用内存. 2).在模块内(在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其他函数访问,他是一个本地的全局变量. 3).在模块内,一个被声明为静态的函数只可被这一模块内的其他函数调用.那就是,这个函数被限制在声明它的模块的本地范围内使用. 原文地址:https://www.cnblogs.com/de

c语言中static 用法总结(转)

惨痛教训: 假设在test.h中定义了一个static bool g_test=false; 若test1.c和test2.c都包含test.h,则test1.c和test2.c分别生成两份g_test,在test1.c 中置g_test=true,而test2.c中仍然为false并未改变!shit!! 一.c程序存储空间布局 C程序一直由下列部分组成: 1)正文段——CPU执行的机器指令部分:一个程序只有一个副本:只读,防止程序由于意外事故而修改自身指令:      2)初始化数据段(数据段

C语言中volatilekeyword的作用

一.前言 1.编译器优化介绍: 由于内存訪问速度远不及CPU处理速度,为提高机器总体性能,在硬件上引入硬件快速缓存Cache,加速对内存的訪问.另外在现代CPU中指令的运行并不一定严格依照顺序运行,没有相关性的指令能够乱序运行,以充分利用CPU的指令流水线,提高运行速度.以上是硬件级别的优化.再看软件一级的优化:一种是在编写代码时由程序猿优化,还有一种是由编译器进行优化.编译器优化经常使用的方法有:将内存变量缓存到寄存器:调整指令顺序充分利用CPU指令流水线,常见的是又一次排序读写指令.对常规内

对C语言中static的理解

对C语言中的static关键字的深入理解 在一次面试的时候面试官问我static全局变量与全局变量的区别,之前虽然用过但是并没仔细去搞懂他,这次来细心的学习一下. 基本概念 使用static有三种情况: 函数内部static变量 函数外部static变量 static函数 函数内部的static变量,关键在于生命周期持久,他的值不会随着函数调用的结束而消失,下一次调用时,static变量的值,还保留着上次调用后的内容. 函数外部的static变量,以及static函数,关键在于私有性,它们只属于

C语言中static关键字的作用

static的作用(精辟分析) 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)先来介绍它的第一条也是最重要的一条:隐藏. 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性.为理解这句话,我举例来说明.我们要同时编译两个源文件,一个是a.c,另一个是main.c. 下面是a.c的内容 char a = 'A'; // global variable void msg()  {     printf("Hello\n"

C语言中static修饰符的意义

在C语言中,static通常有2种含义:1)定义变量的生命周期:2)定义变量或者函数的作用域. 变量的生命周期是指,相对于程序运行的进程生命周期,变量存在的时间段.变量的生命周期由变量的存储类型(位置)决定.因此static的第1种含义也可以理解为,static定义了变量的存储类型(位置). C语言中,变量存储位置分为栈.全局静态区.堆.栈用来做函数调用,参数传递等,在程序的运行过程中是操作最频繁的数据区.全局静态区,是变量一直存在于内存中,在程序整个运行过程中不会被销毁.堆,是由操作系统维护的

[转] C语言中static变量详解

转自:http://blog.chinaunix.net/uid-26822028-id-3191967.html 作者:gecedu Static翻译出来是"静态""静止"的意思,在C语言中的意思其实和它的本意差不多,表示"静态"或者"全局"的意思,用来修饰变量和函数.经static修饰过后的变量或者函数的作用域或者存储域会发生变化,而由static修饰的变量在初始值方面也会表现出static关键字的优势.想知道经stati

C语言中static变量详解

Static翻译出来是“静态”“静止”的意思,在C语言中的意思其实和它的本意差不多,表示“静态”或者“全局”的意思,用来修饰变量和函数.经static修饰过后的变量或者函数的作用域或者存储域会发生变化,而由static修饰的变量在初始值方面也会表现出static关键字的优势.想知道经static修饰过后的变量或者函数的作用域或者存储域发生了什么变化吗,发生变化的原因是什么吗?请大家继续往下看! 一.c程序的内存分布 既然static是用来修饰变量和函数的,而变量和函数又是组成c程序必不可少的,C