static静态关键字,extem外部关键字

static静态关键字修饰的局部变量第一次调用的时候初始化,以后调用的时候不用初始化。

#include<stdio.h>
void fun(int x)
{
	int a = x;
	int b = 0;
	++a; ++b;
	printf("a:%d b = %d\n", a,b);
	return;

}
int main()
{
	for (int i = 10; i > 0; --i)
	{
		fun(i);
	}
	return 0;
}

static 修饰int a之后,再执行程序

static int a = x;

#include<stdio.h>
static void fun(int x)
{
	static int a = x;
	int b = 0;
	++a; ++b;
	printf("a:%d b = %d\n", a,b);
	return;

}
int main()
{
	for (int i = 10; i > 0; --i)
	{
		fun(i);
	}
	return 0;
}

 static修饰的局部变量存储在.data 区,定义并初始化一次,执行一次。

(static 修饰的变量在data区会有一个标记语,刚开始为0,经过一次执行后,标记语会变为1,系统看到标记语就会知道不执行)

#include<stdio.h>
void fun(int x)
{
	static int a = x;//定义并初始化,执行一次
	int b = 0;
	a = x;//每次都执行,不是定义初始化,这句是给a赋值
	++a; ++b;
	printf("a:%d b = %d\n", a,b);
	return;

}
int main()
{
	for (int i = 10; i > 0; --i)
	{
		fun(i);
	}
	return 0;
}

extem关键字
extem用在全局变量或函数的声明前,用来说明"此变量/函数是在别处定义的,要在此处引用" .

在同一工程下,使用其他文件下的函数时,加上外部关键字extem。

eg:extern  int g_max;extern void fun()

告诉编译器,g_max,fun()在其他文件下.就可以使用

但若是在全局变量或者函数前加上静态关键字static,那么此全局变量或函数只能在本文件下调用(限定了此变量或函数的使用范围),不能被其他文件调用

所以,我们要是想让某一全局变量或函数只在本文件下使用,就可以在它前面加上静态关键字static,static int g_min 改变其可见性。即使其他文件下想使用,extern  int g_max,加上外部关键字extern,也不能调用。

总结:静态关键字static修饰局部变量改变其生存期,可见性不变。静态关键字static修饰全局变量和函数时改变其可见性(只能在本文件下使用,即使其他文件加了外部关键字extern也不能调用),不改变生存期。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值