`
omygege
  • 浏览: 1355766 次
文章分类
社区版块
存档分类
最新评论

C语言Static详解

 
阅读更多
因为在很长一段时间里面一直在写面向对象的东西,比如用C#和Java来写东西,习惯了成员变量和成员函数。对static的了解仅限于他的生命期
在类中,而不是在对象,它为所有的类的对象所共享。但是在C语言里面他究竟有什么意思呢?
第一、静态局部变量(static)
众所周知,局部变量在进入该局部作用域时自动创建,离开时自动销毁,即所谓的块作用域。块作用域可以防止命名冲突,有助于帮助函数独立
化,但是有时候会有特别的需求,比如,统计一个递归函数递归调用了多少次。这个时候局部变量便会在每次进入函数的时候进行创建,根本不
能用作计数器。但是又不想使用全局变量,以免造成名字污染,这时候静态局部变量就派上用场了。静态局部变量的也是块作用域,但是他拥有
永久的存储单元,也就是说他可以再被函数本身访问到,如下代码,可以达到统计递归的次数:
#include <stdio.h>
int recu_times();
int main()
{
        printf("%d/n", recu_times());
}
int recu_times()
{
        static int cnt = 10;
        cnt--;
        if(cnt > 0)
                recu_times();
        return cnt;
}
静态局部变量始终有块作用域,所以他对其他的函数是不可见的。静态局部变量是对其他函数隐藏数据的地方,但是它会为将来同一个函数再调用
保留这些数据。
第二、静态全局变量(static)
当使用static声明全局变量的时候,static说明变量具有内部链接。首先需要理解一下,如果全局变量没有声明为static,则在其他文件中可以
通过extern声明来访问此变量,比如我在一个文件中定义了全局变量int i,我就可以在另外一个文件使用extern int i,来声明后就可以在另
外一个文件中访问变量i的值。如果定义了static之后,则无法再访问。
static的这种静态全局变量用来实现一种信息隐藏技术。
分享到:
评论

相关推荐

    C语言关键字详解

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

    static和const用法详解

    C语言中比较经典的static和const的用法

    高级C语言详解

    60. 高级C语言程序员测试必过的十六道最佳题目+答案详解 297 61. C语言常见错误 320 62. 超强的指针学习笔记 325 63. 程序员之路──关于代码风格 343 64. 指针、结构体、联合体的安全规范 346 65. C指针讲解 352 66...

    C/C++static详解

    详细的描述C/C语言的关键字static的作用,及使用时应该注意的事项!

    C语言存储空间布局以及static详解

    本文我将采用Linux环境测试C语言存储空间布局,以及采用VC6.0来测试static的常见用法。采用Linux环境来测试C语言存储空间布局,是因为Linux很容易利用shell命令中的size命令查看到进程存储区各段的大小。采用VC6.0来...

    c语言难点分析整理,C语言

    60. 高级C语言程序员测试必过的十六道最佳题目+答案详解 297 61. C语言常见错误 320 62. 超强的指针学习笔记 325 63. 程序员之路──关于代码风格 343 64. 指针、结构体、联合体的安全规范 346 65. C指针讲解 352 66...

    c语言stack(栈)和heap(堆)的使用详解

    3、全局区(静态区)(static)—全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。4、文字常量区...

    史上最强的C语言资料

    60. 高级C语言程序员测试必过的十六道最佳题目+答案详解 297 61. C语言常见错误 320 62. 超强的指针学习笔记 325 63. 程序员之路──关于代码风格 343 64. 指针、结构体、联合体的安全规范 346 65. C指针讲解 352 66...

    C语言难点分析整理

    60. 高级C语言程序员测试必过的十六道最佳题目+答案详解 297 61. C语言常见错误 320 62. 超强的指针学习笔记 325 63. 程序员之路──关于代码风格 343 64. 指针、结构体、联合体的安全规范 346 65. C指针讲解 352 66...

    高级C语言.PDF

    extern与static存储空间矛盾 ..................................................................................................... 130 31. PC-Lint与C\C++代码质量 ..........................................

    C语言 存储类详解及示例代码

    static extern auto 存储类 auto 存储类是所有局部变量默认的存储类。 { int mount; auto int month; } 上面的实例定义了两个带有相同存储类的变量,auto 只能用在函数内,即 auto 只能修饰局部变量。 ...

    C语言 全局变量和局部变量详解及实例

    C语言 全局变量和局部变量详解 核心内容: 1、局部变量和全局变量 变量按照作用域分为:全局变量和局部变量 全局变量的作用域:从定义位置开始到下面整个程序结束。 局部变量的作用域:在一个函数内部定义的...

    高级C语言 C 语言编程要点

    60. 高级C语言程序员测试必过的十六道最佳题目+答案详解 297 61. C语言常见错误 320 62. 超强的指针学习笔记 325 63. 程序员之路──关于代码风格 343 64. 指针、结构体、联合体的安全规范 346 65. C指针讲解 352 66...

    免费下载:C语言难点分析整理.doc

    60. 高级C语言程序员测试必过的十六道最佳题目+答案详解 297 61. C语言常见错误 320 62. 超强的指针学习笔记 325 63. 程序员之路──关于代码风格 343 64. 指针、结构体、联合体的安全规范 346 65. C指针讲解 352 66...

    高级进阶c语言教程..doc

    60. 高级C语言程序员测试必过的十六道最佳题目+答案详解 297 61. C语言常见错误 320 62. 超强的指针学习笔记 325 63. 程序员之路──关于代码风格 343 64. 指针、结构体、联合体的安全规范 346 65. C指针讲解 352 66...

    C语言难点分析整理.doc

    60. 高级C语言程序员测试必过的十六道最佳题目+答案详解 297 61. C语言常见错误 320 62. 超强的指针学习笔记 325 63. 程序员之路──关于代码风格 343 64. 指针、结构体、联合体的安全规范 346 65. C指针讲解 ...

    详解C语言函数返回值解析

    详解C语言函数返回值解析 程序一: int main() { int *p; int i; int*fun(void); p=fun(); for(i=0;i&lt;3;i++) { printf(%d\n,*p); p++; } return 0; }; int* fun(void) { static int str[]={1,2,3,4...

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

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

    浅谈C/C++中的static与extern关键字的使用详解

    一.C语言中的static关键字在C语言中,static可以用来修饰局部变量,全局变量以及函数。在不同的情况下static的作用不尽相同。(1)修饰局部变量一般情况下,对于局部变量是存放在栈区的,并且局部变量的生命周期在该...

Global site tag (gtag.js) - Google Analytics