static的用法

1、static修饰局部变量:

在局部静态变量前面加上关键字static,该局部变量便成了静态局部变量。静态局部变量有以下特点:
(1)该变量在全局数据区分配内存
(2)如果不显示初始化,那么将被隐式初始化为0
(3)它始终驻留在全局数据区,直到程序运行结束
(4)此变量在函数运行结束的时候没有被销毁还是存在的;退出一个块之后仍然存在的局部变量

2、static 修饰全局变量:

在全局变量前面加上关键字static,该全局变量变成了全局静态变量。
全局静态变量有以下特点:
(1)在全局数据区内分配内存
(2)如果没有初始化,其默认值为0
(3)该变量在本文件内从定义开始到文件结束可见,即只能在本文件内使用


3、static 修饰函数:

在函数的返回类型加上static关键字,函数即被定义成静态函数。
静态函数有以下特点:
(1) 静态函数只能在本源文件中使用
(2) 在文件作用域中声明的inline函数默认为static
说明:静态函数只是一个普通的全局函数,只不过受static限制,他只能在所在文件内使用,不能在其他文件内使用。

include <stdio.h>

static int a = 10;   // 静态全局变量,只在本文件内可见
 

void func()
{
	int i = 0;
	static int j = 0;  // j是静态局部变量,只会被定义一次,在程序结束前,该变量始终存在(函数结束之后他还是存在的,知道程序结束才消失)
	i++;
	j++;
	printf ("i = %d,  j = %d\n", i, j);
}

int main()
{
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		func();
	}

	return 0;
}

这是运行结果

 i 一直是等于1,因为我们知道的,主函数调用了一次子函数,执行完一次操作子函数就会 i 就是被销毁;

所以下次调用的时候重新定义初始值0,执行完之后等于1,退出子函数,i 又被销毁;

可是被static修饰的 j 就不一样了,他会一直存在的局部变量,除非整个程序结束他才会被销毁,所以他会在程序结束之前一直 ++

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值