C语言中static的使用介绍

 更新时间:2021年12月21日 15:30:28   作者:前秃无量  
大家好,本篇文章主要讲的是C语言中static的使用介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览

1.static 可以修饰局部变量

首先让我看看这段代码

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

你认为输出的结果是什么呢?

那为什么结果是2222222222呢

因为局部变量 a 进入这个范围创建  出了这个范围销毁   所以结果都是2

当我们加上static 的结果又会是什么

那为什么加上 static 结果就不一样了

我们研究一下static的使用原理

我们的内存分为三大类

我们的局部变量放在栈区  

而static把a放在了静态区   而在静态区的变量 出了他的范围是不销毁的

我们对比一下 可能更加直观

 所以 static 修饰局部变量的时候,其实改变的是局部变量得存储位置

静态得局部变量是放在静态区,放在静态区的变量出了作用域是不会销毁的,相当于生命周期延长了。

 补充   变量的作用域是不变的,只是生命周期延长了

2. static 可以修饰全局变量

我们再创建一个源文件 

   全局变量的作用域是整个工程

如果我们想引用另一个源文件的函数     这里我们不得不说 extern 这个关键字

如图

  static 可以修饰全局变量  如果我们再全局变量前 加上static会是什么结果呢

此时就会报错  

一个全局变量具有外部链接属性的 (就是可以被其他源文件引用)但是被static 修饰后外部链接属性就变成了内部链接属性 只能在自己所在的源文件内部使用不能在其他文件内部使用

所以再次调试的时候就会报错

那 static 修饰的全局变量的本质是  外部链接属性发生改变   而不是他的作用域变小

static 修饰全局变量的意义是  如果你定义了一个全局变量  别人用 extern 就可以随便使用  

如果你不想让别人看  就可以用static . 

3.static 可以修饰函数

我们用另一个源文件创建一个函数  如图

用 关键字extern 声明后  调试结果

这里我们在函数前加上static 又会是什么结果呢 

  其实一个函数本身具有外部链接属性  被static修饰后 外部链接属性变成了内部链接属性  只能在源2.c 内部使用 其他源文件无法使用    使用上感觉作用域变小

我们可以发现 static 修饰全局变量和修饰函数用法一样   

总结

当我们使用一个局部变量  出了他的范围 不希望他被销毁下次进来之后还在 那我们就可以拿static 修饰 

当我们希望一个全部变量 在他自己源文件使用 任意其他地方不想让别人看到 也可以用static修饰

当我们写的函数只是自己用一下 不希望别人引用 则也可以用static修

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

相关文章

  • C++ Boost TypeTraits库使用详解

    C++ Boost TypeTraits库使用详解

    Boost是为C++语言标准库提供扩展的一些C++程序库的总称。Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一,是为C++语言标准库提供扩展的一些C++程序库的总称
    2022-11-11
  • C语言数据结构链表队列的实现

    C语言数据结构链表队列的实现

    这篇文章主要介绍了C语言数据结构链表队列的实现的相关资料,需要的朋友可以参考下
    2017-07-07
  • VC取得任务栏高度的方法

    VC取得任务栏高度的方法

    这篇文章主要介绍了VC取得任务栏高度的方法,需要的朋友可以参考下
    2014-07-07
  • 解析C++编程中如何使用设计模式中的状态模式结构

    解析C++编程中如何使用设计模式中的状态模式结构

    这篇文章主要介绍了如何在C++编程中适用设计模式中的状态模式结构,状态模式强调将特定状态相关的逻辑分散到一些类的状态类中,需要的朋友可以参考下
    2016-03-03
  • C++ STL容器与函数谓词示例分析讲解

    C++ STL容器与函数谓词示例分析讲解

    这篇文章主要介绍了C++ STL容器与函数谓词示例,STL是“Standard Template Library”的缩写,中文译为“标准模板库”。STL是C++标准库的一部分,不用单独安装
    2022-11-11
  • C++删除指定文件夹下N天及之前日志文件的方法

    C++删除指定文件夹下N天及之前日志文件的方法

    这篇文章主要介绍了C++删除指定文件夹下N天及之前日志文件的方法,涉及C++针对时间判断及文件操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09
  • 用C语言实现猜数字游戏

    用C语言实现猜数字游戏

    这篇文章主要为大家详细介绍了用C语言实现猜数字游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-10-10
  • C++实现区块链的源码

    C++实现区块链的源码

    这篇文章主要介绍了C++实现区块链的源码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • 深入理解结构体中占位符的用法

    深入理解结构体中占位符的用法

    本篇文章是对结构体中占位符的用法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C语言实现字母大小写转换的方法

    C语言实现字母大小写转换的方法

    这篇文章主要介绍了C语言实现字母大小写转换的方法,涉及C语言字符串的遍历与转换技巧,非常简单实用,需要的朋友可以参考下
    2015-07-07

最新评论