1.总述

关键词是由C语言规定的具有特定意义的字符串,通常也称为保留字,用户定义的标识符不应与关键词相同,C语言的关键字共有32个,根据关键字的作用,可分其为数据类型关键字、控制语句关键字、存储类型关键字和其它关键字四类,具体如以下表格中显示:

类型 关键词 简要说明
数据类型关键字 char  声明字符型变量或函数
double  声明双精度变量或函数
enum 声明枚举类型 
float 声明浮点型变量或函数 
int 声明整型变量或函数 
long 声明长整型变量或函数 
short 声明短整型变量或函数 
signed 声明有符号类型变量或函数 
struct 声明结构体变量或函数 
union 声明共用体数据类型 
unsigned 声明无符号类型变量或函数 
void 声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)
控制语句关键字  for 一种循环语句(循环语句关键词)
 do  循环语句的循环体(循环语句关键词)
 while  循环语句的循环条件(循环语句关键词)
 break 跳出当前循环(循环语句关键词)
 continue 结束当前循环,开始下一轮循环(循环语句关键词)
if 条件语句分支(条件语句关键词)
else  条件语句否定分支(条件语句关键词)
goto 无条件跳转语句(条件语句关键词)
switch 用于开关语句(开关语句)
case 开关语句分支(开关语句)
default 开关语句中的“其他”分支(开关语句)
return  子程序返回语句(返回语句)
存储类型关键字 auto 声明自动变量(一般不使用)
extern 声明变量是在其他文件正声明(也可以看做是引用变量)
register 声明寄存器变量
static 声明静态变量
其它关键字 const 声明常类型,常类型的变量或对象的值是不能被更新的,可使用在常量定义,指针定义,函数定义等处,与volatile合称“cv特性”,指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变)
sizeof 用于计算特定类型或特定类型变量的数据类型长度
typedef 常规变量类型定义,数据类型取别名,指针类型定义,函数地址说明,函数声明,函数指针定义等
volatile 说明变量在程序执行中可被隐含地改变 说明变量在程序执行中可被隐含地改变,与const合称“cv特性”,指定变量的值有可能会被系统或其他进程/线程改变,强制编译器每次从内存中取得该变量的值

2.部分关键词进一步说明

下面针对enum,static,union,extern,const,typedef,volatile这几个关键词做出较为详细的说明:

2.1 enum

在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量说明为整型,字符型或其它类型显然是不妥当的。为此,C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。应该说明的是,枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型。

如同结构和联合一样,枚举变量也可用不同的方式说明,即先定义后说明,同时定义说明或直接说明。设有变量DAY1,DAY2,DAY3被说明为上述的DAY,可采用下述任一种方式:
enum DAY { SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY };
enum weekday DAY1,DAY2,DAY3;
或者为:
enum DAY { SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY } DAY1,DAY2,DAY3;
或者为:

enum { SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY } DAY1,DAY2,DAY3;

例:

#include <stdio.h>
int main()
{enum DAY { SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY } DAY1,DAY2,DAY3;DAY1=SUNDAY;DAY2=MONDAY;DAY3=TUESDAY;printf("%d,%d,%d\n",DAY1,DAY2,DAY3);DAY1=(enum DAY)2;printf("%d,%d,%d\n",DAY1,DAY2,DAY3);
}
输出结果:
0,1,2
2,1,2

注:

枚举值是常量,不是变量,不能在程序中用赋值语句再对它赋值;
      枚举元素本身由系统定义了一个表示序号的数值,从0开始顺序定义为0,1,2…。如在DAY中,SUNDAY值为0,MONDAY值为1,…,SATURDAY值为6;
      只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量;
      如一定要把数值赋予枚举变量,则必须用强制类型转换;

枚举元素不是字符常量也不是字符串常量,使用时不要加单、双引号;

例:

#include <stdio.h>
int main()
{enum DAY { SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY } DAY1,DAY2,DAY3;DAY1=SUNDAY;//正确,能把枚举值赋予枚举变量DAY2=MONDAY;//正确,能把枚举值赋予枚举变量DAY3=TUESDAY;//正确,能把枚举值赋予枚举变量DAY1=(enum DAY)0;//正确,如一定要把数值赋予枚举变量,则必须用强制类型转换,其意义是将顺序号为0的枚举元素赋予枚举变量DAY1DAY2=(enum DAY)1;//正确,如一定要把数值赋予枚举变量,则必须用强制类型转换,其意义是将顺序号为1的枚举元素赋予枚举变量DAY2DAY3=(enum DAY)2;//正确,如一定要把数值赋予枚举变量,则必须用强制类型转换,其意义是将顺序号为2的枚举元素赋予枚举变量DAY3/*对于DAY1=0;DAY2=1;DAY3=2;的编译在ubuntu的编译器下可以通过且可以把相应的值赋给相应变量,但是在VC下编译报错*/DAY1=0;//错误,不能把元素的数值直接赋予枚举变量DAY2=1;//错误,不能把元素的数值直接赋予枚举变量DAY3=2;//错误,不能把元素的数值直接赋予枚举变量SUNDAY=5;//错误,枚举值是常量,不是变量,不能在程序中用赋值语句再对它赋值MONDAY=6;//错误,枚举值是常量,不是变量,不能在程序中用赋值语句再对它赋值return 0;
}//正确,能把枚举值赋予枚举变量DAY2=MONDAY;//正确,能把枚举值赋予枚举变量DAY3=TUESDAY;//正确,能把枚举值赋予枚举变量DAY1=(enum DAY)0;//正确,如一定要把数值赋予枚举变量,则必须用强制类型转换,其意义是将顺序号为0的枚举元素赋予枚举变量DAY1DAY2=(enum DAY)1;//正确,如一定要把数值赋予枚举变量,则必须用强制类型转换,其意义是将顺序号为1的枚举元素赋予枚举变量DAY2DAY3=(enum DAY)2;//正确,如一定要把数值赋予枚举变量,则必须用强制类型转换,其意义是将顺序号为2的枚举元素赋予枚举变量DAY3/*对于DAY1=0;DAY2=1;DAY3=2;的编译在ubuntu的编译器下可以通过且可以把相应的值赋给相应变量,但是在VC下编译报错*/DAY1=0;//错误,不能把元素的数值直接赋予枚举变量DAY2=1;//错误,不能把元素的数值直接赋予枚举变量DAY3=2;//错误,不能把元素的数值直接赋予枚举变量SUNDAY=5;//错误,枚举值是常量,不是变量,不能在程序中用赋值语句再对它赋值MONDAY=6;//错误,枚举值是常量,不是变量,不能在程序中用赋值语句再对它赋值return 0;
}

注:枚举值的常量值在没有被赋值的情况下,系统默认给它的第一个值赋0,后面的依次为1,2,3;不过也可以直接指定某个或者某些枚举值的数值,比如说,星期日对应0对中国人来说不好接受,那么我们这样定义: enum DAY { MONDAY=1,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY } ;这样的话,TUESDAY就将等于2,直接到SUNDAY等于7.  另:枚举类型定义规定,默认低一些枚举成员值为0,后一项枚举成员的值自动取前一项的枚举成员的值加1,在实际应用中,第一项的值不一定为0,所有的枚举变量也不一定是连续的,这时就需要显示赋值。 另:枚举赋值时不可以有重复,否则会报错;尽量从小到大排列,虽然乱序编译不会报错,但是会影响阅读和维护。

例:

TEST
{TEST1=1,  //从1开始,而不是0TEST2,    //默认加1,所以TEST2为2TEST10=10,//出现不连续,TEST10是10TEST11    //上一个值加一得到TEST11是11
}

2.2 static

【C/C++】复习关键字static

C++中类的static成员变量和static成员函数

2.3 typedef

C语言typedef的用法详解

typedef 可以给数组、指针、结构体等类型定义别名。来看一个给数组类型定义别名的例子:
typedef char ARRAY20[20];
表示 ARRAY20 是类型char[20]的别名。它是一个长度为20的数组类型。接着可以用ARRAY20定义数组:
ARRAY20 a1, a2, s1, s2;
它等价于:
char a1[20], a2[20], s1[20], s2[20];
注意,数组也是有类型的。例如char a1[20];定义了一个数组 a1,它的类型就是 char [20]。

2.4 SWITCH

switch statement (C++)

C语言的关键字及其部分关键词详细用法相关推荐

  1. c语言ofstream,C++ ofstream跟ifstream详细用法以及C语言的file用法

    C++ ofstream和ifstream详细用法以及C语言的file用法 ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间; 在C++中,有一个strea ...

  2. c语言volatile关键字(详细)总结附示例讲解

    目录 一.简介 二.示例代码解析 2.1 修饰变量 2.2 修饰硬件寄存器地址 三.其他相关链接 一.简介 volatile属于C语言的关键字.开发者告诉编译器该变量是易变的,无非就是希望编译器去注意 ...

  3. C语言程序设计——结构体的运用 完成对输入的字符串中C关键词的查找统计。程序运行示例如下:本程序将为您统计C语言的关键字的个数,请输入,输入end结束输入:

    完成对输入的字符串中C关键词的查找统计. 程序运行示例如下: 本程序将为您统计C语言的关键字的个数,请输入,输入end结束输入: if do while while do break goto hel ...

  4. Python编程语言学习:python语言中快速查询python自带模块函数的用法及其属性方法、如何查询某个函数关键词的用法、输出一个类或者实例化对象的所有属性和方法名之详细攻略

    Python编程语言学习:python语言中快速查询python自带模块&函数的用法及其属性方法.如何查询某个函数&关键词的用法.输出一个类或者实例化对象的所有属性和方法名之详细攻略 ...

  5. __declspec关键字详细用法

    __declspec关键字详细用法 2009-01-21 16:23 __declspec用于指定所给定类型的实例的与Microsoft相关的存储方式.其它的有关存储方式的修饰符如static与ext ...

  6. 对C语言的关键字及部分关键字用法的简单理解

    小盆友,你是否有很多问号??? C语言的关键字是什么?有哪些?他们如何用??? 我也在学习中迷惑着,所以把今天学习到的稍微做一下总结,方便自己以后的复习(目前学到的比较粗浅,以后还需要深入学习). 哪 ...

  7. C语言基础入门笔记(超详细笔记,多出进行更新,将近九千字)

    下载VS2013,我们一起学习. #include 包含一个叫stdio.h的文件,文件包含令,预处理指令. stdio.h C语言的标准I/O库,用于读取和写入文件,也用于控制台的输入和输出. ma ...

  8. Java语言的关键字

    Abstract 抽象的 一个Java语言中的关键字,用在类的声明中来指明一个类是不能被实例化的,但是可以被其它类继承.一个抽象类可以使用抽象方法,抽象方法不需要实现,但是需要在子类中被实现 brea ...

  9. 返回语句C语言return关键字

    时间紧张,先记一笔,后续优化与完善. C语言return关键字 return 用来终止一个函数并返回其前面跟着的值,绝对很简单. return (Val)://此括号可以省略.但一般不省略,尤其在返回 ...

最新文章

  1. 微博feed系统的推(push)模式和拉(pull)模式和时间分区拉模式架构探讨
  2. 全球及中国液压磁路保护器行业发展规划与产销需求预测报告2022版
  3. 【要闻】Kubernetes安全问题严峻、Linux v5.4安全性浅谈
  4. 云网络的守护神:主动链路监控
  5. Redis 的 应用问题
  6. Linux 下源代码阅读工具 —— vim + TagList + CTags
  7. 工作计划进度甘特图.xlsx
  8. Watir vs Selenium
  9. Windows下使用c++编译hiredis.lib,Win32_Interop.lib
  10. 控制台中画一个正方体
  11. android 缺半圆形头像,圆形头像设计
  12. c语言搭积木游戏,我们一起搭积木,做游戏,就这就简单
  13. hive中的distribute by
  14. 进销存软件的价值是多少?它能帮企业做什么?
  15. BC渗透的常见切入点(总结)
  16. 超好玩的mac模拟经营游戏:巨型水族馆中文版
  17. Android模拟器检测体系梳理,android驱动开发入门
  18. 【论文总结】Lip Reading Sentences in the Wild(唇语识别)
  19. 4. Java并发编程-管程
  20. 【动态规划DP】弹簧板

热门文章

  1. XMLGregorianCalendar 保留年月日格式
  2. JS小型游戏框架coquette学习(持续更新)
  3. 抢注商标是蹭热点还是“不要脸”?
  4. docker运行yyets_你应该知道的5个开源Docker工具...
  5. 如何写软文才能达到预期的效果
  6. JS关于canvas画布小笔记
  7. canal简介及canal部署、原理和使用介绍
  8. C语言里struct和union的区别
  9. 使用jmail发送短信
  10. PostgreSQL HA集群高可用方案介绍 pgpool-II+PostgreSQL HA方案部署