c语言中的static静态(1)static修饰局部变量

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

在上面的代码中,static修饰局部变量。

当用static定义一个局部变量后,这时局部变量就是静态的局部变量。但一个普通的局部变量是进入函数创建,出函数销毁。但是此时定义的局部变量已经有static修饰,进入函数时已经创建好了,出函数的时候也不销毁,多次调用函数时,共享一个变量。给我们的主观感受是:生命周期变长了,但是作用域不改变,只能在局部范围内使用。

本质是:普通的局部变量是放在内存里的栈区,而经过static修饰后的局部变量,则会被放在内存里的静态区。静态区的变量的生命周期和全局变量的生命周期一样。

因此,此时的运行结果是2 3 4 5 6,而不是2 2 2 2 2。

相关推荐

  1. C++自动变量和static声明静态局部变量

    2023-12-17 20:48:04       29 阅读
  2. C语言static关键字

    2023-12-17 20:48:04       21 阅读
  3. c++static作用

    2023-12-17 20:48:04       18 阅读
  4. 深入理解C语言 extern`和 static

    2023-12-17 20:48:04       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-17 20:48:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-17 20:48:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-17 20:48:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-17 20:48:04       20 阅读

热门阅读

  1. Android 内置APK 无法开机(开机后apk闪退)

    2023-12-17 20:48:04       55 阅读
  2. 查看hive表储存在hdfs的哪个目录下

    2023-12-17 20:48:04       33 阅读
  3. P1115 最大子段和

    2023-12-17 20:48:04       26 阅读
  4. 骑砍战团MOD开发(21)-module_mission_templates预制常量

    2023-12-17 20:48:04       37 阅读
  5. 70.爬楼梯

    2023-12-17 20:48:04       41 阅读
  6. 基于Hadoop的智慧社区大数仓库系统设计与开发

    2023-12-17 20:48:04       31 阅读
  7. 串的处理。

    2023-12-17 20:48:04       34 阅读
  8. 基于SpringBoot的和微信小程序养老院管理系统

    2023-12-17 20:48:04       46 阅读
  9. 刚clone下来的项目如何上传到新的仓库

    2023-12-17 20:48:04       33 阅读