关键字详解


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结构体的,.的左边为结构体变量,右边为结构体成员;->的左边为结构体指针,右边为成员
.的使用
在这里插入图片描述
->的使用
在这里插入图片描述
更多关于结构体的内容,我们将在后期进行更为详细的讲解。

结语
各位好哥哥好姐姐点点关注点点赞吧!!!

  • 14
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值