常见关键字

本文详细解释了C语言中的关键字,如auto、break、const等,涉及局部变量、类型、控制结构、存储类型(如static和register)、以及宏定义。介绍了typedef的作用以及静态变量和全局变量的静态修饰对作用域的影响。
摘要由CSDN通过智能技术生成

目录

auto

break

case

char

const

continue

default

do

double

short

int

long

long long

float

else

enum

extern

for

goto

register

return

signed

unsigned

sizeof

static

struct

union

typedf

viod

while

关键字typedef

寄存器关键字regrested

关键字static

define定义的常量和宏


前言

C语言中常见的关键字总共有这么些

 下面将对部分关键字进行附加解释

auto

自动的,所有的局部变量都等于自动变量

break

停止,用在循环中

case

switch case语句

char

属于一种类型

const

用来修饰指针,变量,

continue

继续,用于循环

default

switch语句里的默认选项

do

do while 循环

double

属于一种类型

short

属于一种类型

int

属于一种类型

long

属于一种类型

long long

属于一种类型

float

属于一种类型

else

if else语句

enum

自定义类型,枚举

extern

用于声明外部符号

for

for循环

goto

goto语句

register

寄存器关键字

return

函数中的返回

signed

有符号的

unsigned

无符号的

这种变量只能放正数,放复数也会被处理成正数对待

sizeof

用来计算类型或者大小的

static

用来修饰变量的

struct

结构体(自定义类型)

union

联合体/共用体(自定义类型)

typedf

类型重定义

viod

无类型,空类型,一般用于函数返回值,参数

while

while循环

关键字typedef

类型重命名

比如我们要定义一个无符号的整型

但名字太长,不好写,我们就用typedef重定义

从此 unsigned 可以用 unit 代替

寄存器关键字regrested

寄存器是计算机上的一种储存设备

由下到上,速度越来越快,空间越来越小

cpu - 中央处理器,数据从内存中拿出来放到cpu进行处理,早期内存读写速度和cpu处理速度匹配,随着技术的发展cpu处理越来越快,内存的读写速度却跟不上,由于更高读写速度的内存造价高,就有了高速缓存和寄存器。

设计就变成了,cpu在寄存器中拿数据进行处理,内存的数据往高速缓存里放,高速缓存的数据往寄存器里放,当cpu把寄存器中的数据拿完后才回去高速缓存和内存中拿,这样计算机整体的计算速度就提升了

于是就有建议将数据放到寄存器中的代码

这段代码就是建议计算机将10放在寄存器中,并没有强制将数据放在寄存器中的代码

关键字static

1、修饰局部变量

首先先看一个代码

关于这个代码,由于变量 a 的生命周期就是test函数,所以每当test函数被调用时,a 就会被创建并赋值为1再++,最后打印,当test函数结束后,a 就会被销毁 ,i++,由于 i 还是小于10,所以又会重新调用test函数,而上次创建的局部变量 a 已经被销毁,a 又会重复上述步骤,然后再返回main函数直到 i

等于10后,函数运行结束。

所以打印结果是10个2

当局部变量 a 被static修饰后

当static修饰变量 a 后,a就变成了静态的局部变量,打印过后也不会销毁,所以 a 的值会越来越大

原理:static 修饰局部变量变量时改变了变量的存储类型

内存一般会划分为这3个区

变量 a 原本是局部变量,应放在栈区,被static修饰后储存位置改变为静态区,而放在静态区的变量的生命周期与程序的生命周期一样,出了作用域依然不销毁,只有程序结束,他们的生命才会被回收

结果变量 a

生命周期:变长了

作用域:不变

2、修饰全局变量

在当前源文件下新建一个文件,在这个文件内部创建一个全局变量。

在原来的文件中创建函数打印时却发现无法打印

其实只需要声明一下这个全局变量,即可运行成功

这里的 extern 是用来声明外部符号

当我们用static修饰这个全局变量时再运行代码,就会发现无法运行

存在未定义的变量

原因是:众所周知,一个代码需要经过 编译 + 链接 生成可编译程序 exe 文件 代码才会运行。

而我们的全局变量是具有外部连接属性的,static修饰全局变量的时候,这个全局变量的外部连接属性就变成了内部连接属性,这个全局变量只能再自己所在的.c文件中看到,其他源文件看不到了。

3、修饰函数

先在新创建的文件中新建函数,再在旧文件中创建main函数,并声明新文件中的函数再运行。

随后再用 static 修饰新函数,就会无法运行

原因:函数本身是具有外部连接属性的,如果static修饰函数,那么这个函数的外部连接属性就变成了内部连接属性,这个函数只能再自己所在的源文件内部使用,其他源文件无法使用该函数。

最后,我们再来了解一个额外的知识 define,这个先仅仅有个概念就行

define定义的常量和宏

这个就是define定义的常量

define定义的宏,宏和函数的结构较相似,也拥有参数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值