C语言深度解剖-关键字(2)
创始人
2024-05-18 23:58:08
0

目录

1.关键字 static

源文件与头文件

static修饰全局变量

static修饰局部变量

写在最后:


1.关键字 static

源文件与头文件

平时我们在练习的时候,都只会开一个用来测试的源文件,

但是,当我们在写一个项目的时候,例如扫雷、三子棋等等,

我们就会分装成三个以上的文件进行编写 。

例:

test.c文件中:

#define _CRT_SECURE_NO_WARNINGS 1#include "Show.h"int main()
{//创建结构体变量A a1 = { 10 };printf("%d\n", n);printf("%d\n", a1.a);show();return 0;
}

Show.c文件中:

#define _CRT_SECURE_NO_WARNINGS 1#include "Show.h"mytype n = 10;void show()
{printf("hello world\n");
}

Show.h文件中:

#pragma once//在.h文件中
//1.C头文件
//2.所有变量声明
//3.所有函数声明
//4.#define,类型typedef,struct#include typedef int mytype;extern mytype n;//变量声明一定要加externvoid show();typedef struct A
{mytype a;
}A;

最后打印出的结果:

输出:

输出:
10
10
hello world

这是对于分装.c文件和.h文件的一些补充知识和和说明。

static修饰全局变量

我们在show.c文件中:

#define _CRT_SECURE_NO_WARNINGS 1#include "Show.h"//static修饰全局变量时,
//该变量只在别文件内被访问,不能被外部文件访问
static mytype n = 10;void show()
{printf("hello world\n");
}

然后编译就错误,无法通过了。

当然,static 也可以修饰函数。

#define _CRT_SECURE_NO_WARNINGS 1#include "Show.h"//static修饰全局变量时,
//该变量只在别文件内被访问,不能被外部文件访问
static mytype n = 10;//同理
static void show()
{printf("hello world\n");
}

这样,我们可以利用static保护我们的项目。

static修饰局部变量

例:

这段代码因为 i 每次进入函数时都会重定义成1。

#include "Show.h"void f()
{int i = 0;i++;printf("%d ", i);}void print()
{for (int i = 0; i < 10; i++){f();}
}int main()
{print();return 0;
}

输出:

输出:1 1 1 1 1 1 1 1 1 1

而用 static 修饰:

#include "Show.h"void f()
{static int i = 0;i++;printf("%d ", i);}void print()
{for (int i = 0; i < 10; i++){f();}
}int main()
{print();return 0;
}

输出:

输出:1 2 3 4 5 6 7 8 9 10

总结:

static 修饰局部变量,更改局部变量的生命周期。

临时变量变成全局生命,但是作用域不变。

如下图:

 局部变量被放到了全局数据区,或者说静态区。

(注:在整个进程运行生命周期内,都是有效的)

而在栈区的局部变量具有临时性。

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果喜欢本文的话,欢迎点赞和评论,写下你的见解。

如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。

之后我还会输出更多高质量内容,欢迎收看。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...