C语言static


static可以修饰函数为内部函数,只能在本文件中被调用,其他源文件不能声明调用该函数。

static修饰的全局变量只能在本源文件中访问,其他源文件不能使用。

static还可修饰局部变量为静态局部变量,保存到静态存储区,下次再调用该函数时可以保留上一次的调用结果。

#include <stdio.h>


void statictest1_1(int len){
	auto int a = 0;
	static int b = 0;
	printf("a+len = %d+%d", a,len);
	a +=len;
	printf("=%d\t", a);
	printf("b+len=%d+%d", b,len);
	b +=len;
	printf("=%d\n", b);
	
}

static void statictest1_2(){
	printf("static修饰的函数只能在本文件中被调用\n");
}

void staticmain(){
	for(int i=0; i < 5; i++){
		statictest1_1(i);
	}
}
输出:

a+len = 0+0=0   b+len=0+0=0
a+len = 0+1=1   b+len=0+1=1
a+len = 0+2=2   b+len=1+2=3
a+len = 0+3=3   b+len=3+3=6
a+len = 0+4=4   b+len=6+4=10

由于a使用auto修饰表示动态分配内存,每次调用函数时a的内存都是动态分配和释放的,每次都初始化为0

而b使用static修饰,表示存放在静态存储区,一直到main程序结束才释放内存,当函数调用结束时还是可以保留b的值。只在第一次初始化,下次使用上一次的计算结果。

虽然用static修饰b,但b还是局部变量,其他函数不能访问到b

可计算1+2+3+4+.....+n和1*2*3*4*....*n




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值