静态变量C语言提供了关键字来修饰变量的定义

 2024-01-06 09:01:45  阅读 0

C语言提供了关键字来修改变量定义。 由关键字修饰的变量称为静态变量。 关键字修饰的变量定义格式如下:

数据类型名变量名;

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

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

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

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

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

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

static变量放哪个区域_变量前加static_局部变量前加static

程序运行结果如下:

可以看到,第一次调用func函数时,会进入func函数体,定义静态局部变量a,然后给静态局部变量a赋值,并对变量的值进行累加。 使用静态局部变量a的值为15个数值。

然后,当第二次调用func函数时,又进入func函数。 这时候就遇到了局部变量a的定义语句。 那么,由于静态局部变量a已经被定义了,所以静态局部变量a将不再被执行。 跳过静态局部变量a的定义语句。 然后对静态局部变量a进行累加,使得变量a的值为25。

当第三次调用func函数时,与第二次调用func函数一样,由于静态局部变量a已经被定义,所以不再执行静态局部变量a的定义语句。 然后对静态局部变量a进行累加,使得变量a的值为35。

通过这个测试例子可以看出,静态局部变量的定义语句只执行一次,因此定义静态局部变量时的初始化值也只执行一次。

对于静态全局变量,它们的“范围”仅限于定义全局静态变量的源文件。 静态全局变量不能通过关键字在其他源文件中使用。 首先,我们创建一个新的test.c源文件,并在源文件中定义一个全局变量:

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

局部变量前加static_static变量放哪个区域_变量前加static

程序运行结果如下:

可以看到,对于test.c源文件中定义的全局变量value,可以使用test1.c源文件中的关键字来声明value关键字是其他模块中定义的变量。 然后,可以在 test1.c 源文件中使用 value 变量。

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

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

可以看到,编译提示错误! test1.c 源文件中使用的 value 变量未定义。 由于test.c中定义的value变量是静态全局变量,因此静态全局变量的作用域仅限于定义该变量的test.c源文件。 那么,test1.c源文件中就不能使用test.c了。 源文件中定义的静态全局变量。

由于静态全局变量的作用域仅限于定义该变量的源文件,因此可以在不同的源文件中定义同名的静态全局变量。

标签: 变量 静态 定义

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码