大家好,如果您还对C语言变量,如何定义静态类型的静态变量?它有什么作用?不太了解,没有关系,今天就由本站为大家分享C语言变量,如何定义静态类型的静态变量?它有什么作用?的知识,包括的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!
因此,定义变量时,在数据类型名前加上static关键字,定义的变量就是静态变量。然后,您可以包含“静态局部变量”和“静态全局变量”。我们先总结一下静态局部变量和静态全局变量的特点,然后写一个测试例子来证明一下。总结如下:
(1)静态局部变量与局部变量具有相同的作用域;它们位于定义变量的代码块内;它们的生命周期与全局变量相同,是在整个程序运行期间。
此外,静态局部变量仅初始化一次。第一次初始化后,第二次遇到局部变量将不会被重新定义。
(2)静态全局变量与全局变量具有相同的生命周期,即在整个程序运行期间;范围仅限于定义静态全局变量的源文件。例如,如果在test.c源文件中定义了静态全局变量,则该静态全局变量只能在test.c源文件中使用。
(3)静态局部变量和静态全局变量的初始值默认设置为0。
下面我们通过例子来说明静态局部变量的使用。程序测试示例如下:
程序运行结果如下:
可以看到,第一次调用func函数时,会进入func函数体,定义静态局部变量a,然后给静态局部变量a赋值,并对变量的值进行累加。使用静态局部变量a的值为15个数值。
然后,当第二次调用func函数时,又进入func函数。这时候就遇到了static局部变量a的定义语句。那么,由于静态局部变量a已经被定义了,所以静态局部变量a将不再被执行。跳过静态局部变量a的定义语句。然后对静态局部变量a进行累加,使得变量a的值为25。
当第三次调用func函数时,与第二次调用func函数一样,由于静态局部变量a已经被定义,所以不再执行静态局部变量a的定义语句。然后对静态局部变量a进行累加,使得变量a的值为35。
通过这个测试例子可以看出,静态局部变量的定义语句只执行一次,因此定义静态局部变量时的初始化值也只执行一次。
对于静态全局变量,它们的“范围”仅限于定义全局静态变量的源文件。静态全局变量不能通过extern关键字在其他源文件中使用。首先,我们创建一个新的test.c源文件,并在源文件中定义一个全局变量:
然后,新建一个test1.c源文件,其中通过关键字引用全局变量。 test1.c源文件的代码如下:
程序运行结果如下:
这时我们用static关键字修改test.c源文件中定义的全局变量,定义为静态全局变量,如下:
然后,重新编译程序,编译结果如下:
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/124601.html
用户评论
纯情小火鸡
我刚学了C语言,这个题有点没头绪,看了一下这篇博文好像理解了! static 的地方好巧妙呀。
有8位网友表示赞同!
志平
啊,这就是为什么有些成员变量需要加 `static` 才能在 class 里面被共用吗?太棒了,一下子就明白了,之前费劲脑汁搞不懂这个问题了
有9位网友表示赞同!
汐颜兮梦ヘ
这篇博文写的超级清晰! 还有代码示例解释,比其他博客简单易懂太多了。 C语言入门简直必看啊! 👍
有16位网友表示赞同!
笑叹★尘世美
我一直在写C程序遇到一个问题,就是一些变量明明定义在同一个文件里却无法共用,后来才发现要用 `static` 。这篇博文讲解到位了。
有5位网友表示赞同!
凉凉凉”凉但是人心
刚学C,感觉这静态类型的概念有点抽象。如果讲得更直观一点就好了,比如用生活中的例子来类比解释,这样更容易理解
有17位网友表示赞同!
我一个人
这篇博客虽然解释清楚了变量的定义,但我觉得少了对 `static` 变量作用场景的介绍,像在多线程程序中使用 `static` 的优势在哪里啊? 这点希望能补充一下。
有16位网友表示赞同!
(り。薆情海
说真的,静态变量的概念挺简单,就是用来存储一些常值或者函数内部的数据吧?这篇博文讲得过于复杂,简要些就好
有9位网友表示赞同!
堕落爱人!
感觉标题有点误导性,应该加上“作用是”之类的关键词,更清晰地引导读者了解内容。 我觉得 static 就跟个隐藏变量一样,只有在局部有效,其他地方看不到啊!
有9位网友表示赞同!
来自火星球的我
对理解 `static` 变量的作用很有帮助,以前总以为它只是个简单的存储空间而已,现在看明白了它在代码中的特殊意义了。
有19位网友表示赞同!
迷路的男人
这个博文太适合初学者了,从基础到应用都解释得很清楚,让我一下子就掌握了 `static` 类型的变量定义方法!
有5位网友表示赞同!
赋流云
静态变量的作用就是避免重分配空间? 那像全局变量岂不是也属于局部变量的范畴?这个地方感觉有点疑惑…
有9位网友表示赞同!
一尾流莺
我之前尝试用 `static` 定义一个变量,结果发现它在函数以外是无法访问的,这让我觉得有些局限性,难道只有放在函数内部定义才能发挥作用吗?
有8位网友表示赞同!
孤城暮雨
C语言真是太powerful了! 用 `static` 就能实现局部作用域的效果,这个简直就是黑客神技啊!
有16位网友表示赞同!
醉婉笙歌
我觉得这篇博文可以多添加一些实际案例,这样更能直观地展示 `static` 变量的使用场景,对于理解它的作用会有更好的帮助。
有11位网友表示赞同!
喜欢梅西
我一直在想 static 的具体作用是什么? 是为了优化程序的效率吗?还是说有什么其他的作用?
有19位网友表示赞同!
◆乱世梦红颜
感觉这篇文章讲得有些理论性,缺乏实践性的讲解,比如可以提供一些使用 `static` 变量的小练习题, 让读者在实践中加深理解。
有14位网友表示赞同!