C语言关键字static

在C语言中,ststic是用来修饰变量和函数的


前言

static

1. 修饰局部变量 - 称为静态局部变量
2. 修饰全局变量 - 称为静态全局变量
3. 修饰函数 - 称为静态函数

一、修饰局部变量

static修饰局部变量-称为静态局部变量,

static修饰局部变量,局部变量生命周期变长。

1.未使用static的对照

代码示例

#include <stdio.h>

int Run()
{
	int x = 1;
	x++;
	printf("%d\n", x);
	return 0;
}
int main()
{
	int i = 0;
	while (i < 5)
	{
		Run();
		i++;
	}
	return 0;
}

运行结果

2
2
2
2
2

main函数中进入while循环后,第一次运行Run函数时x赋值为1,x++;使x值为2。打印一次x的值,跳出Run函数后,x值不保留。第二次进入Run函数,x又赋值为1,x++;使x值为2。第三次,第四次,第五次x值依旧。

2.使用static定义局部变量

代码示例

#include <stdio.h>

int Run()
{
	static int x = 1; //x是一个静态的局部变量
	x++;
	printf("%d\n", x);
	return 0;
}
int main()
{
	int i = 0;
	while (i < 5)
	{
		Run();
		i++;
	}
	return 0;
}

运行结果

2
3
4
5
6

将x定义为静态局部变量后,main函数中进入while循环后,第一次运行Run函数时x赋值为1,x++;使x值为2。打印一次x的值,跳出Run函数后,x值保留。第二次进入Run函数,x值为上一次运行后的值2,x++;使x值为3,跳出Run函数后,x值保留。第三次,x值为4。第四次,x值为5。第五次x值为6。

二、修饰全局变量

static修饰全局变量-称为静态全局变量

static修饰全局变量,改变了变量的作用域,让静态变量只能在自己所在的源文件内部使用,出源文件无法使用。

1.未使用static的对照

代码示例

#include <stdio.h>

int main()
{
	extern int Num; //extern声明外部符号
	printf("%d\n", Num);
	return 0;
}

/

#include <stdio.h>

 int Num = 123;


运行结果

123

2.使用static定义全局变量

代码示例

#include <stdio.h>

int main()
{
	extern int Num; //extern声明外部符号
	printf("%d\n", Num);
	return 0;
}

/

#include <stdio.h>

static int Num = 123;

运行结果出错

三、修饰函数

static修饰函数-称为静态函数

static修饰函数改变了函数的连接属性(外部连接属性变为内部连接属性)

1.未使用static的对照

代码示例

#include <stdio.h>

extern int Add(int,int); //extern声明外部符号
int main()
{
	int a = 2;
	int b = 6;
	int Sum = Add(a,b);
	printf("%d\n", Sum);
	return 0;
}



#include <stdio.h>

int Add(int x, int y)
{
	int z = x + y;
	return z;
}

运行结果

8

2.使用static修饰函数

代码示例

#include <stdio.h>

extern int Add(int,int); //extern声明外部符号
int main()
{
	int a = 2;
	int b = 6;
	int Sum = Add(a,b);
	printf("%d\n", Sum);
	return 0;
}



#include <stdio.h>

static int Add(int x, int y)
{
	int z = x + y;
	return z;
}

运行结果


总结

本文简单介绍了static关键字的作用。以及不同情况下的运行结果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值