C语言的32个关键字详解

目录

 

auto

int

double

long

char

float

short

signed

unsigned

struct

union

enum

static

switch

case

default

break

register

const

volatile

typedef

extern

return

void

continue

do

while

if

else

for

goto

sizeof

  • auto

声明自动变量,缺省时编译器一般默认为 auto

  • int

声明整型变量

  • double

声明双精度变量

  • long

声明长整型变量

  • char

声明字符型变量

  • float

声明浮点型变量

  • short

声明短整型变量

  • signed

声明有符号类型变量

  • unsigned

声明无符号类型变量

  • struct

声明结构体变量

  • union

声明联合数据类型

  • enum

声明枚举类型

  • static

声明静态变量

static的作用

第一个作用:修饰变量。

变量又分为局部和全局变量,但它们都存在内存的静态区。


静态全局变量:

作用域仅限于变量被定义的本C文件中,其他文件即使用 extern 声明也没法使用他。准确地说作用域是从定义之处开始,到文件结尾处结束,在定义之处前面的那些 代码行也不能使用它。想要使用就得在前面再加 extern ***。


静态局部变量:

在函数体里面定义的,就只能在这个函数里用了,同一个文档中的其他 函数也用不了。由于被static 修饰的变量总是存在内存的静态区,所以即使这个函数运行结束,这个静态变量的值还是不会被销毁,函数下次使用时仍然能用到这个值。
 

第二个作用:修饰函数。

函数前加 static 使得函数成为静态函数。但此处“static”的含义 不是指存储方式,而是指对函数的作用域仅局限于本C文件(所以又称内部函数)。

  • switch

用于开关语句

  • case

开关语句分支

  • default

开关语句中的“其他”分支

  • break

跳出当前循环

  • register

声明寄存器变量

register int  i=  1024;

寄存器存在于CPU内部,运算速度非常快, 因为内存中的数据必须载入寄存器才能计算。如果直接定义一个变量为寄存器变量,则少了载入等过程自然会快。对于频繁使用的变量可以把它放在寄存器中来提速度。

注意:

虽然寄存器的速度非常快,但是使用 register 修饰符也有些限制的:register 变量必须是 能被 CPU 寄存器所接受的类型。意味着 register 变量必须是一个单个的值,并且其长度应小 于或等于整型的长度。 而且 register 变量可能不存放在内存中,所以不能用取址运算符“&” 来获取 register 变量的地址。

 

  • const

声明只读变量

  • volatile

说明变量在程序执行中可被隐含地改变

volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。

volatile  int  v_int  = 1024; 

当要求使用 volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。而且读取的数据立刻被保存。

  • typedef

用以给数据类型取别名(当然还有其他作用)

typedfe unsigned short  u_16;   //u_16 可以代表unsigned short类型,使得程序的可移植性得到了有效的提高;

u_16 u_short = 64  ==> unsigned short u_short = 64 

typedfe unsigned int    u_32;

u_32  u_int = 1024; ==> unsigned int u_int  = 1024;


还可以在定义结构体时使用typedef,也是非常方便

typedef struct st_person
{
    char *m_name;
    int  m_age;

}s_person;

s_person m_person;

就可以用s_person来代替struct st_person,
 

 

  • extern

声明变量是在其他文件正声明(也可以看做是引用变量)

例如声明其他文件可以访问的全局变量或函数:

extern int g_val = 1024;  //除了本C文件外,和导入此文件的头文件的C文件按都可以访问,但一般不建议这样做,这样会导致线程不安全,因为当多个线程来访问这个变量时,则这个变量就会变为临界资源,会导致每个线程返回的结果和所期望的结果不一致,因为其他线程也会改变这个变量,解决方法是加入锁的机制,类似于商场的换衣间,有人进去之后就会上锁,出来之后就会释放锁。同样当有线程访问这个变量时就会上锁,访问完成后就会释放锁。以便其他线程访问。

extern int func();  //本C文件和导入此文件的头文件的C文件都可以访问。

  • return

子程序返回语句(可以带参数,也可不带参数)

  • void

声明函数无返回值或无参数,声明空类型指针

  • continue

结束当前循环,开始下一轮循环

  • do

循环语句的循环体

  • while

循环语句的循环条件

  • if

条件语句

  • else

条件语句否定分支(与 if 连用)

  • for

一种循环语句(可意会不可言传)

  • goto

无条件跳转语句(建议是少用,但是如果用的巧妙,就会发现他特别妙)

  • sizeof

计算对象所占内存空间大

int * p_int  = NULL;

sizeof(p_int); //它的大小有操作系统的位数决定,如果是32位的操作系统,用sizeof来求一个指针的大小永远位4字节;如果是64位的操作系统,用sizeof来求一个指针的大小永远位8字节,与该指针的类型无关。char *p_char 、double *p_double……

 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XiaoCheng'Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值