C语言之详解静态变量static

 更新时间:2023年04月10日 08:59:30   作者:Yan-英杰  
在C语言中static是用来修饰变量和函数的,这篇文章详细介绍了static主要作用,文章中有详细的代码实例,需要的朋友可以参考阅读

关键字static    

在C语言中:

static是用来修饰变量和函数的

static主要作用为:

1. 修饰局部变量 - 静态局部变量

2. 修饰全局变量 - 静态全局变量

3. 修饰函数 - 静态函数

 在讲解静态变量之前,我们应该了解静态变量和其他变量的区别:

修饰局部变量

//代码1
#include <stdio.h>
void test()
{
    int i = 0;
    i++;
    printf("%d ", i);
}
int main()
{
 int i = 0;
    for(i=0; i<10; i++)
   {
        test();
   }
    return 0;
}

运行结果:

调用静态变量static

//代码2
#include <stdio.h>
void test()
{
    //static修饰局部变量
    static int i = 0;
    i++;
    printf("%d ", i);
}
int main()
{
 int i = 0;
    for(i=0; i<10; i++)
   {
        test();
   }
    return 0;
}

运行结果:

对比代码1和代码2的效果理解static修饰局部变量的意义.

结论:

static修饰局部变量 改变了变量的生命周期 ,让静态局部变量出了作用域依然存在,到程序结 束,生命周期才结束。

 修饰全局变量 

 
//add.c
int g_val = 2018;
//代码2
//add.c
extern int g_val;
//test.c
int main()
{
    printf("%d\n", g_val);
    return 0;
}

代码执行:

当给int g_val添加static静态变量进行修饰后,发生报错

代码执行:

结论:

全局变量本身是具有外部链接属性的

在A文件中定义的变量,在B文件中可以通过【链接】使用

但如果全局变量被static修饰后,这个外部链接属性就变成了内部链接属性,这个全局变量只能在本身源文件内使用

static可以把外部链接属性,变成内部链接属性,使得全局变量作用域变小

 修饰函数

结论:

函数本身是具有外部链接属性的

被static修饰后,外部链接属性变成了内部链接属性

使得这个函数只能在自己所在的源文件内部使用,其他源文件无法链接使用

到此这篇关于C语言之详解静态变量static的文章就介绍到这了,更多相关C语言staiic详解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 《C++ Primer》隐式类类型转换学习整理

    《C++ Primer》隐式类类型转换学习整理

    在本篇文章里小编给大家整理的是关于《C++ Primer》隐式类类型转换学习笔记内容,需要的朋友们参考下。
    2020-02-02
  • 华为面试题答案找出最大长度子字符串

    华为面试题答案找出最大长度子字符串

    找出最大长度子字符串,打印并且返回长度。 例如 str = "abc123abcd234abcdefgha324adsdawqdasdaseqqwe345abchded",看下面的代码实现吧
    2013-12-12
  • Qt实现转动轮播图

    Qt实现转动轮播图

    这篇文章主要为大家详细介绍了Qt实现转动轮播图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • C++数据结构二叉搜索树的实现应用与分析

    C++数据结构二叉搜索树的实现应用与分析

    从这篇博客开始,我就要和大家介绍有关二叉搜索树的知识,它还衍生出了两棵树——AVL树和红黑树,在后面两篇博客我都会介绍。今天先从二叉搜索树开始引入
    2022-02-02
  • Define,const,static用法总结

    Define,const,static用法总结

    const定义的全局数据变量,其基本作用和define相同,但又在define的基础上增加了好多功能
    2013-10-10
  • c/c++基础简单易懂的快速排序算法

    c/c++基础简单易懂的快速排序算法

    这篇文章主要为大家介绍了c/c++基础非常简单易懂的快速排序算法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2021-11-11
  • C语言利用栈实现对后缀表达式的求解

    C语言利用栈实现对后缀表达式的求解

    这篇文章主要为大家详细介绍了C语言利用栈实现对后缀表达式的求解,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • 用C语言实现单链表的各种操作(二)

    用C语言实现单链表的各种操作(二)

    本篇文章是对用C语言实现单链表的各种操作进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C++实现数据结构的顺序表详解

    C++实现数据结构的顺序表详解

    这篇文章主要为大家详细介绍了C++实现动态顺序表,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • C/C++ 动态数组的创建的实例详解

    C/C++ 动态数组的创建的实例详解

    这篇文章主要介绍了C/C++ 动态数组的创建的实例详解的相关资料,希望通过本文能帮助到大家,让大家掌握这样的功能,需要的朋友可以参考下
    2017-10-10

最新评论