iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >c语言static关键字用法详解
  • 277
分享到

c语言static关键字用法详解

2024-04-02 19:04:59 277人浏览 薄情痞子
摘要

目录1.static修饰全局变量2.static修饰函数3.static修饰局部变量总结:1.static修饰全局变量 我们创建两个源文件,一个test.c,一个main.c 现在

1.static修饰全局变量

我们创建两个源文件,一个test.c,一个main.c

现在我们在test.c文件下定义一个全局变量

int g_val = 100;

我们在main.c下进行调用打印g_val我们能访问到g_val吗?

答案是可以的

如果给g_val加上static修饰我们还能再main.c下访问到吗?

static int g_val = 100;

这时候答案是不行的!

 因此我们得到了static的第一个结论

结论1:static修饰全局变量,该变量只在本文件内被访问,不能在其他文件被直接访问。

2.static修饰函数

 我们在test.c文件下写一个show()函数,请问在main.c文件能调用吗?

 答案是可以的。

那这时候给show()函数加上static,main.c下还能调用该函数吗?

 

答案是不可以的!因此我们可以得到第二个结论

结论2:static修饰函数,该函数只能在本文件内被访问,不能被其他文件访问,但是可以通过嵌套的方式调用,变相的封装的表现。

但是我们可以通过函数嵌套调用的方式调用show函数。

什么意思呢?就是在show函数的相同文件内创建一个新的函数,调用show函数,我们再在main.c文件下调用这个新的函数,已达到调用show()函数的目的。 

例:我们创建一个show_helper函数,来调用static修饰的show函数,我们再在main.c文件内调用show_helper函数。

 结果:

通过嵌套的方式调用,变相的封装的表现。

因此static项目维护,可以提供安全保护。被static修饰,主要限制的是作用域。

3.static修饰局部变量

void fun()
{
	int i = 0;
	i++;
	printf("i = %d\n", i);
}
 
int main()
{
	for (int i = 0; i < 10; i++)
	{
		fun();
	}
}

你知道这段代码,它的运行结果是什么吗?

通过结果我们发现他打印了10个1,其中,i是局部变量,具有临时性,函数调用时开辟空间并初始化,函数结束释放空间。

那么如果我们static修饰局部变量,即给int i  = 0;前static所修饰,结果还会一样吗?

void fun()
{
	static int i = 0;
	i++;
	printf("i = %d\n", i);
}
 
int main()
{
	for (int i = 0; i < 10; i++)
	{
		fun();
	}
}

 答案当然是不一样的, 我们发现,结果变成了1-10。因此我们可以得到第三个结论。

分析:

结论3:static修饰局部变量,更改该局部变量的生命周期。

生命周期:将临时变量的生命周期变成全局变量的生命周期。

作用域不变:作用域仍然是代码块内。

总结:

static:

结论1:static修饰全局变量,该变量只在本文件内被访问,不能在其他文件被直接访问。

结论2:static修饰函数,该函数只能在本文件内被访问,不能被其他文件访问。但是可以通过嵌套的方式调用,变相的封装的表现。

结论3:static修饰局部变量,更改该局部变量的生命周期。
生命周期:将临时变量的生命周期 -- 全局变量的生命周期。
作用域不变:作用域仍然是在本代码块内。

到此这篇关于C语言static关键字用法详解的文章就介绍到这了,更多相关c语言static关键字内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: c语言static关键字用法详解

本文链接: https://www.lsjlt.com/news/162674.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • c语言static关键字用法详解
    目录1.static修饰全局变量2.static修饰函数3.static修饰局部变量总结:1.static修饰全局变量 我们创建两个源文件,一个test.c,一个main.c 现在...
    99+
    2022-11-12
  • 详解C语言中的Static关键字
    一、static关键字的基本含义 首先,static关键字的意思是静态的,用于修饰局部变量,全局变量和函数,修改其数据储存类型 1.局部变量:在任意一个函数内部定义的变量(不加sta...
    99+
    2022-11-13
  • C语言Static 关键字解析
    目录01简述02static关键字作用01简述 static关键字在嵌入式C语言当中很简单,它有三个作用: 作用一:在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变...
    99+
    2022-11-13
  • C语言入门篇--关键字static详解
    目录1.修饰局部变量1.1作用1.2举例(1)不加static(2)加static(3)静态局部变量的初始化只会进行一次2.修饰全局变量2.1作用2.2举例(1)不加static(2...
    99+
    2022-11-12
  • 全面了解C语言 static 关键字
    目录一,前言二、认识多文件1、多文件的创建2、为什么要有多文件3、为什么要有头文件4、多文件在代码中的具体体现三、最名不符实的关键字 - static1、static 修饰局部变量2...
    99+
    2022-11-13
  • C语言关键字auto与register及static专项详解
    目录1.auto2.register3.static1.auto 在解释 auto 之前,先来了解一下什么是局部变量。 在很多印象中,对局部变量的描述是:函数内定义的变量称为局部变量...
    99+
    2022-11-13
  • c语言中关键字Static怎么用
    这篇文章将为大家详细讲解有关c语言中关键字Static怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、可执行程序内存分配1. 可执行程序程序分段一个程序的3个基本...
    99+
    2022-10-19
  • C/C++中的static关键字详解
    目录C/C++ 中的 static1. 静态局部变量2. 静态全局变量3. static 修饰函数C++的 static 成员静态成员变量 静态成员函数总结:static是...
    99+
    2022-11-13
  • 深度理解C语言中的关键字static
    目录一、函数和变量的多文件问题1.1.为什么全局变量和函数需要跨文件访问二、static修饰变量和函数2.1.static修饰全局变量2.2.static修饰局部变量2.3.为什么局...
    99+
    2022-11-12
  • C语言中的Static关键字怎么用
    这篇文章主要介绍C语言中的Static关键字怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、static关键字的基本含义首先,static关键字的意思是静态的,用于修饰局部变量,全局变量和函数,修改其数据储存...
    99+
    2023-06-26
  • c语言关键字static的作用是什么
    在C语言中,关键字static有以下几种作用:1. 静态变量:static关键字可以用于声明静态变量,静态变量存储在静态存储区,在程...
    99+
    2023-09-14
    c语言 static
  • C语言关键字之autoregister详解
    目录一:auto作用域生命周期auto二:register总结:一:auto 在学习关键字auto之前我们需要先了解两个概念:作用域和生命周期。 作用域 作用域(scope)是程序设...
    99+
    2022-11-12
  • C语言的static关键字应用实例分析
    这篇文章主要介绍“C语言的static关键字应用实例分析”,在日常操作中,相信很多人在C语言的static关键字应用实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言的static关键字应用实例分析...
    99+
    2023-06-30
  • C语言中static关键字的作用是什么
    本篇内容介绍了“C语言中static关键字的作用是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!static这个关键字是“静态”的意思,...
    99+
    2023-07-05
  • 详解Java的static关键字
    文章目录 🎄静态方法🌺静态方法和非静态方法对比🛸静态方法实例🛸非静态方法实例 🌹static关键字⭐static变量⭐static代码块 ...
    99+
    2023-12-22
    java 开发语言 static 静态方法
  • C语言中static和auto用法详解
    目录static的第一种用法:定义为静态变量static的第二种用法:有理说不清,直接代码见真知auto的用法:直接代码见真知总结static的第一种用法:定义为静态变量 何为静态变...
    99+
    2022-11-12
  • 一文搞懂C语言static关键字的三个作用
    目录static修饰局部变量static 修饰全局变量static 修饰函数总结static修饰局部变量 图一:test 函数里面定义的 a 是局部变量,局部变量在栈区上开辟空...
    99+
    2022-11-13
  • C语言详解关键字sizeof与unsigned及signed的用法
    目录最冤枉的关键字sizeof理解被误解为函数sizeof(int)*p 表示什么意思signed与unsigned 关键字有符号整数vs无符号整数整形在内存的存储原码反码补码存储的...
    99+
    2022-11-13
  • 一文带你了解C语言中static关键字的3个作用
    目录1.修饰局部变量2.修饰全局变量3.修饰函数总结static这个关键字是“静态”的意思,在C语言里有3个作用。分别是: 1.修饰局部变量,该局部变量称为静...
    99+
    2023-05-15
    C语言 static关键字作用 C语言 static关键字 C语言 static
  • Java static关键字详细解析
    目录static目的static范围静态(static)修饰静态变量静态方法静态代码块静态类static变量存储在方法区(Method Area)static目的 java中的sta...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作