C语言变量,如何定义静态类型的静态变量?它有什么作用?

static静态变量C语言提供了static关键字来修饰变量的定义,static关键字修饰的变量称为:静态变量;该关键字修饰变量的定义格式如下:static 数

大家好,如果您还对C语言变量,如何定义静态类型的静态变量?它有什么作用?不太了解,没有关系,今天就由本站为大家分享C语言变量,如何定义静态类型的静态变量?它有什么作用?的知识,包括的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

因此,定义变量时,在数据类型名前加上static关键字,定义的变量就是静态变量。然后,您可以包含“静态局部变量”和“静态全局变量”。我们先总结一下静态局部变量和静态全局变量的特点,然后写一个测试例子来证明一下。总结如下:

(1)静态局部变量与局部变量具有相同的作用域;它们位于定义变量的代码块内;它们的生命周期与全局变量相同,是在整个程序运行期间。

此外,静态局部变量仅初始化一次。第一次初始化后,第二次遇到局部变量将不会被重新定义。

(2)静态全局变量与全局变量具有相同的生命周期,即在整个程序运行期间;范围仅限于定义静态全局变量的源文件。例如,如果在test.c源文件中定义了静态全局变量,则该静态全局变量只能在test.c源文件中使用。

(3)静态局部变量和静态全局变量的初始值默认设置为0。

下面我们通过例子来说明静态局部变量的使用。程序测试示例如下:

C语言变量,如何定义静态类型的静态变量?它有什么作用?

程序运行结果如下:

可以看到,第一次调用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源文件,并在源文件中定义一个全局变量:

C语言变量,如何定义静态类型的静态变量?它有什么作用?

然后,新建一个test1.c源文件,其中通过关键字引用全局变量。 test1.c源文件的代码如下:

程序运行结果如下:

这时我们用static关键字修改test.c源文件中定义的全局变量,定义为静态全局变量,如下:

然后,重新编译程序,编译结果如下:

用户评论

C语言变量,如何定义静态类型的静态变量?它有什么作用?
纯情小火鸡

我刚学了C语言,这个题有点没头绪,看了一下这篇博文好像理解了! static 的地方好巧妙呀。

    有8位网友表示赞同!

C语言变量,如何定义静态类型的静态变量?它有什么作用?
志平

啊,这就是为什么有些成员变量需要加 `static` 才能在 class 里面被共用吗?太棒了,一下子就明白了,之前费劲脑汁搞不懂这个问题了

    有9位网友表示赞同!

C语言变量,如何定义静态类型的静态变量?它有什么作用?
汐颜兮梦ヘ

这篇博文写的超级清晰! 还有代码示例解释,比其他博客简单易懂太多了。 C语言入门简直必看啊! 👍

    有16位网友表示赞同!

C语言变量,如何定义静态类型的静态变量?它有什么作用?
笑叹★尘世美

我一直在写C程序遇到一个问题,就是一些变量明明定义在同一个文件里却无法共用,后来才发现要用 `static` 。这篇博文讲解到位了。

    有5位网友表示赞同!

C语言变量,如何定义静态类型的静态变量?它有什么作用?
凉凉凉”凉但是人心

刚学C,感觉这静态类型的概念有点抽象。如果讲得更直观一点就好了,比如用生活中的例子来类比解释,这样更容易理解

    有17位网友表示赞同!

C语言变量,如何定义静态类型的静态变量?它有什么作用?
我一个人

这篇博客虽然解释清楚了变量的定义,但我觉得少了对 `static` 变量作用场景的介绍,像在多线程程序中使用 `static` 的优势在哪里啊? 这点希望能补充一下。

    有16位网友表示赞同!

C语言变量,如何定义静态类型的静态变量?它有什么作用?
(り。薆情海

说真的,静态变量的概念挺简单,就是用来存储一些常值或者函数内部的数据吧?这篇博文讲得过于复杂,简要些就好

    有9位网友表示赞同!

C语言变量,如何定义静态类型的静态变量?它有什么作用?
堕落爱人!

感觉标题有点误导性,应该加上“作用是”之类的关键词,更清晰地引导读者了解内容。 我觉得 static 就跟个隐藏变量一样,只有在局部有效,其他地方看不到啊!

    有9位网友表示赞同!

C语言变量,如何定义静态类型的静态变量?它有什么作用?
来自火星球的我

对理解 `static` 变量的作用很有帮助,以前总以为它只是个简单的存储空间而已,现在看明白了它在代码中的特殊意义了。

    有19位网友表示赞同!

C语言变量,如何定义静态类型的静态变量?它有什么作用?
迷路的男人

这个博文太适合初学者了,从基础到应用都解释得很清楚,让我一下子就掌握了 `static` 类型的变量定义方法!

    有5位网友表示赞同!

C语言变量,如何定义静态类型的静态变量?它有什么作用?
赋流云

静态变量的作用就是避免重分配空间? 那像全局变量岂不是也属于局部变量的范畴?这个地方感觉有点疑惑…

    有9位网友表示赞同!

C语言变量,如何定义静态类型的静态变量?它有什么作用?
一尾流莺

我之前尝试用 `static` 定义一个变量,结果发现它在函数以外是无法访问的,这让我觉得有些局限性,难道只有放在函数内部定义才能发挥作用吗?

    有8位网友表示赞同!

C语言变量,如何定义静态类型的静态变量?它有什么作用?
孤城暮雨

C语言真是太powerful了! 用 `static` 就能实现局部作用域的效果,这个简直就是黑客神技啊!

    有16位网友表示赞同!

C语言变量,如何定义静态类型的静态变量?它有什么作用?
醉婉笙歌

我觉得这篇博文可以多添加一些实际案例,这样更能直观地展示 `static` 变量的使用场景,对于理解它的作用会有更好的帮助。

    有11位网友表示赞同!

C语言变量,如何定义静态类型的静态变量?它有什么作用?
喜欢梅西

我一直在想 static 的具体作用是什么? 是为了优化程序的效率吗?还是说有什么其他的作用?

    有19位网友表示赞同!

C语言变量,如何定义静态类型的静态变量?它有什么作用?
◆乱世梦红颜

感觉这篇文章讲得有些理论性,缺乏实践性的讲解,比如可以提供一些使用 `static` 变量的小练习题, 让读者在实践中加深理解。

    有14位网友表示赞同!

原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/124601.html

(0)
小su's avatar小su
上一篇 2024年9月1日 下午6:59
下一篇 2024年9月1日 下午7:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注