C语言为使用者提供了许多的关键字,这些关键字不能被使用者们所修改,使用者也无法自己创建关键字,我们在定义变量时也不能使用关键字作为变量名;下面由我来向大家其中的3个关键字。
下图为关键字总汇
在这里插入图片描述
1.typedef
typedef的作用是将类型重命名,如果当我们的类型名太长不便使用时,我们就可以使用typedef来简写数据类型,代码如下
在这里插入图片描述
2.register
register是寄存器变量,在电脑存储设备中,我们可以分为以下几种
CPU获取数据优先选择寄存器,同时高速缓存向寄存器中运送数据,内存向高速缓存运送数据。若CPU速度过快,寄存器无数据时,CPU则会向下级(高速缓存)提取数据。
register的作用是建议编译器将修饰量放在寄存器中
3.static
static的作用分别是修饰局部变量,修全局变量,修饰函数。
a.修饰局部变量
我们先来看看下面这段代码:
大家想一想,这道题中我们打印的数值是多少呢?
我们预期的结果是不是打印10个3呢?但具体实现起来究竟是什么?让我们一起看看
打印的竟然是10个3,这又是为什么呢?让我来给大家分析分析:
经过上述分析相信大家已经明白为何无法打印3到12的值,那么我们要怎样才能做到打印3到12的值呢?此时就需要用到我们的static关键字。下面上代码:
我们发现,在int a前加上static,我们就能打印出3到12的值了,那么static修饰局部变量的原理是什么呢?
下面我们先来简单了解下数据的存储模式
可以看到局部变量是存放在栈区的,而放在静态区的变量的生命周期是整个工程,static就是利用这个特性,将原本处于栈区的变量转变为处于静态区的静态变量,此时a的生命周期就会被延长至整个工程结束;
b.修饰全局变量
我们都知道extern是声明外部符号的意思,但若我要保障我的全局变量不被外部所引用,那这时就需要用到static来修饰全局变量;
未使用static前
使用static后
我们直接讲原理:static使全局变量的外部链接属性变成了内部链接属性;何为链接呢?我们先简单了解下便可:在编译器要执行代码时,需要进行编译+链接再变成可执行程序,将外部链接属性转为内部,就使得其余.c文件无法访问到这个全局变量
c.修饰函数
static修饰函数的原理与修饰全局变量的相同,都是使其外部链接属性转化为内部链接属性,外部无法访问其修饰的函数
static修饰函数前
修饰函数后
同理,static修饰函数也是起到保护函数不被随意访问的作用
4.struct
struct为结构体关键字,属于自定义类型;何为自定义类型呢?在C语言中,C语言本身提供给我们内置的数据类型,但若遇到需要描述一个人时(年龄,性别,地址,电话)内置的数据类型并不能满足我们,此时就要引入结构体。同为自定义类型的还有union,enum。
我们在使用结构体时,还需要注意些什么呢?
我们前面提到的下标引用操作符. ->就是用于struct结构体的,.的左边为结构体变量,右边为结构体成员;->的左边为结构体指针,右边为成员。
.的使用
->的使用
更多关于结构体的内容,我们将在后期进行更为详细的讲解。
结语
各位好哥哥好姐姐点点关注点点赞吧!!!