C语言关键字------(2)

《本文采用发现问题并解决问题的方式行文》

一.extern关键字

发现问题:

C语言关键字------(2)_第1张图片C语言关键字------(2)_第2张图片

我们发现计算机不认识g_val。

解决问题:

在不同文件中,声明变量和函数是必要的。即extern存在的意义。

C语言关键字------(2)_第3张图片

C语言关键字------(2)_第4张图片

成功运行。

发现问题:

可不可以在main.c文件中向test.c文件一样,extern g_val=100;呢?

答案是否定的:

C语言关键字------(2)_第5张图片

解决问题:

1.声明没有开辟空间;

2.“=100”是初始化或赋值操作;

3.所有的变量声明的时候,不能设置初始值。

二.头文件的来源(为什么要有头文件)

单纯的使用源文件,组织项目语言的时候,项目越大越复杂的时候,维护成本会变得越来越高!

.h:头文件组织项目结构的时候,减少大型项目的维护成本问题。

改改我们的代码:

C语言关键字------(2)_第6张图片

C语言关键字------(2)_第7张图片

C语言关键字------(2)_第8张图片

三.static关键字

观察一和二,我们可以很好的回答以下问题:

1.变量可以跨文件访问吗??

答:可以!

2.函数可以跨文件访问吗??

答:可以!

3.在具体的应用场景当中,有没有可能,我们不想让全局变量或函数跨文件访问,只在本文件内部被访问?------static!!!

C语言关键字------(2)_第9张图片

C语言关键字------(2)_第10张图片

加入static后,直接报错!且错误类型为LNK,即链接时报错。

C语言关键字------(2)_第11张图片

(1)结论一

static修饰全局变量,该变量只在本文件内被访问,不能被外部其他文件直接访问,但是可以通过函数,设置接口间接访问。

更改了全局变量的作用域。

C语言关键字------(2)_第12张图片

C语言关键字------(2)_第13张图片

(2)结论二

static修饰函数,该函数只能在本文件内被访问,不能在外部其他文件直接访问。

static项目维护,提供安全保障。

(3)结论三

观察一组现象:

C语言关键字------(2)_第14张图片

C语言关键字------(2)_第15张图片

C语言关键字------(2)_第16张图片

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

临时变量->全局的生命周期

但在使用的角度,跟全局变量还是存在差别,因为没有改变a的作用域,其作用域只在本代码块内有效!!!

C语言关键字------(2)_第17张图片

C语言关键字------(2)_第18张图片

你可能感兴趣的:(我和C的约定,开发语言,c语言,程序人生)