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

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的枚举元素赋予枚举变量DAY1
  DAY2=(enum DAY)1;//正确,如一定要把数值赋予枚举变量,则必须用强制类型转换,其意义是将顺序号为1的枚举元素赋予枚举变量DAY2
  DAY3=(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的枚举元素赋予枚举变量DAY1
  DAY2=(enum DAY)1;//正确,如一定要把数值赋予枚举变量,则必须用强制类型转换,其意义是将顺序号为1的枚举元素赋予枚举变量DAY2
  DAY3=(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开始,而不是0
        TEST2,    //默认加1,所以TEST2为2
        TEST10=10,//出现不连续,TEST10是10
        TEST11    //上一个值加一得到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++)

    

  • 51
    点赞
  • 156
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值