工作经验总结之C语言关键字的作用、特性和使用方式

C语言简洁、紧凑,使用方便、灵活。ANSI C标准C语言共有32个关键字,9种控制语句,程序书写形式自由,区分大小写。把高级语言的基本结构和语句与低级语言的实用性结合起来。 C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。

关键字(keyword)属于保留字,是整个语言范围内预先保留的标识符。每个C++关键字都有特殊的含义。经过预处理后,关键字从预处理记号(preprocessing-token)中区别出来,剩下的标识符作为记号(token),用于声明对象、函数、类型、命名空间等。不能声明与关键字同名的标识符。

前面几篇也分别介绍了其他语言的关键字,详细请参考专栏

  1. Verilog的关键字(上)
  2. Verilog的关键字(下)
  3. Python的关键字
  4. Go的关键字
  5. C语言的关键字
  6. C++的关键字
  7. JavaScript的关键字

C进阶:https://blog.csdn.net/zhouruifu2015/category_5695139

本篇将分享下对C语言关键字的一个总结,分别逐个介绍下这些关键字的作用,特性和使用方法及代码示例,下一篇将介绍下C++的关键字。

C关键字介绍

C语言一共提供了44个关键字,分别如下:

auto,break,case,char,const,continue,default,do,double,else,enum,extern,float,for,goto,if,int,inline,long,register,restrict,return,short,signed,sizeof,static,struct,switch,typedef,unsigned,union,void,volatile,while,_Bool,_Complex,_Imaginary,_Alignas,_Alignof,_Atomic,_Static_assert,_Noreturn,_Thread_local,_Generic

  1. auto:声明自动变量。
  2. break:跳出当前循环。
  3. case:开关语句分支。
  4. char:声明字符型变量或函数返回值类型。
  5. const:声明只读变量。
  6. continue:结束当前循环,开始下一轮循环。
  7. default:开关语句中的“默认”分支。
  8. do:循环语句的循环体。
  9. double:声明双精度浮点型变量或函数返回值类型。
  10. else:条件语句否定分支(与if连用)。
  11. enum:声明枚举类型。
  12. extern:声明变量或函数是在其它文件或本文件的其他位置定义。
  13. float:声明浮点型变量或函数返回值类型。
  14. for:一种循环语句。
  15. goto:无条件跳转语句。
  16. if:条件语句。
  17. int:声明整型变量或函数。
  18. inline:用于定义内联函数。
  19. long:声明长整型变量或函数返回值类型。
  20. register:声明寄存器变量。
  21. restrict:只能用于指针类型, 用于指定指针所指向的内存区域是唯一的。
  22. return:子程序返回语句(可以带参数,也可不带参数)。
  23. short:声明短整型变量或函数。
  24. signed:声明有符号类型变量或函数。
  25. sizeof:计算数据类型或变量长度(即所占字节数)。
  26. static:声明静态变量。
  27. struct:声明结构体类型。
  28. switch:用于开关语句。
  29. typedef:用以给数据类型取别名。
  30. unsigned:声明无符号类型变量或函数。
  31. union:声明共用体类型。
  32. void:声明函数无返回值或无参数,声明无类型指针。
  33. volatile:说明变量在程序执行中可被隐含地改变。
  34. while:循环语句的循环条件。

其中,ANSI C一共只有32个关键字,而1999年12月16日,ISO推出了C99标准,该标准新增了5个C语言关键字:inline、restrict、_Bool、_Complex、_Imaginary,_Bool和_Complex是C语言中常用的关键字,它们分别用于定义布尔类型的变量和定义复数类型的变量。

2011年12月8日,ISO发布C语言的新标准C11,该标准新增了7个C语言关键字:_Alignas、_Alignof、_Atomic、_Static_assert、_Noreturn、_Thread_local、_Generic它们分别用于指定变量或类型的对齐方式、获取变量或类型的对齐方式、定义原子类型的变量、在编译时检查条件、告诉编译器一个函数不会返回、定义线程局部变量和实现泛型编程。

C的44个关键字

C语言是一种广泛使用的编程语言,它具有丰富的关键字,其中包括auto、break、case和char。这些关键字在C语言中发挥着重要的作用,下面我们来详细介绍一下它们的作用、特性和使用方法。

C进阶:https://blog.csdn.net/zhouruifu2015/category_5695139

  1.  auto

auto是C语言中的一个关键字,它用于定义自动变量。自动变量是指在函数内部定义的变量,它们的作用域仅限于函数内部。当函数执行结束后,自动变量的内存空间会被释放,变量的值也会被销毁。

auto关键字在C语言中是可选的,如果不使用auto关键字定义变量,则默认为自动变量。例如:

```

int main()

{

    int a = 10; // 声明自动变量a

    auto int b = 20; // 声明自动变量b

    return 0;

}

```

  1.  break

break是C语言中的一个关键字,它用于跳出循环语句。当程序执行到break语句时,循环语句会立即终止,程序会跳出循环,并继续执行下一条语句。break通常用于在循环中满足某个条件时跳出循环,例如:

```

int main()

{

    int i;

    for(i = 0; i < 10; i++)

    {

        if(i == 5)

        {

            break; // 当i等于5时跳出循环

        }

        printf("%d\n", i);

    }

    return 0;

}

```

  1.  case

case是C语言中的一个关键字,它用于在switch语句中判断不同的情况。在switch语句中,程序会根据表达式的值跳转到相应的case语句处执行。如果表达式的值与任何一个case语句的值相等,则执行该case语句中的代码。例如:

```

int main()

{

    int a = 2;

    switch(a)

    {

        case 1:

            printf("a = 1\n");

            break;

        case 2:

            printf("a = 2\n");

            break;

        case 3:

            printf("a = 3\n");

            break;

        default:

            printf("a is not 1, 2 or 3\n");

            break;

    }

    return 0;

}

```

  1.  char

char是C语言中的一个关键字,它用于定义字符类型变量。在C语言中,字符类型变量是用单引号括起来的单个字符,例如:

```

char c = 'a';

```

char类型变量通常用于存储ASCII码表示的字符,也可以用于存储整数类型的数据。在C语言中,char类型变量的大小为1字节,取值范围为-128到127。

  1.  const

const是C语言中的一个关键字,它用于定义常量。常量是指在程序运行过程中不可修改的值,它们通常用于存储程序中的固定值,例如圆周率、常量字符串等。const关键字定义的常量在程序运行过程中不可修改,这有助于提高程序的可靠性和安全性。

const关键字的使用方法如下:

```

const int a = 10; // 定义一个整型常量a,值为10

const char* str = "hello"; // 定义一个字符串常量str,值为"hello"

```

  1.  continue

continue是C语言中的一个关键字,它用于跳过当前循环中的某次迭代。当程序执行到continue语句时,循环会立即进入下一次迭代,跳过当前迭代中continue语句后面的代码。continue通常用于在循环中满足某个条件时跳过当前迭代,例如:

```

int main()

{

    int i;

    for(i = 0; i < 10; i++)

    {

        if(i == 5)

        {

            continue; // 当i等于5时跳过当前迭代

        }

        printf("%d\n", i);

    }

    return 0;

}

```

  1.  default

default是C语言中的一个关键字,它用于在switch语句中定义默认情况。在switch语句中,程序会根据表达式的值跳转到相应的case语句处执行。如果表达式的值与任何一个case语句的值都不相等,则执行default语句中的代码。例如:

```

int main()

{

    int a = 4;

    switch(a)

    {

        case 1:

            printf("a = 1\n");

            break;

        case 2:

            printf("a = 2\n");

            break;

        case 3:

            printf("a = 3\n");

            break;

        default:

            printf("a is not 1, 2 or 3\n");

            break;

    }

    return 0;

}

```

  1.  do

do是C语言中的一个关键字,它用于定义do-while循环。do-while循环是一种先执行循环体,再判断循环条件的循环结构。在do-while循环中,循环体至少会执行一次。例如:

```

int main()

{

    int i = 0;

    do

    {

        printf("%d\n", i);

        i++;

    } while(i < 10);

    return 0;

}

```

  1.  double

double是C语言中的一个关键字,它用于定义双精度浮点数。双精度浮点数是指在内存中占用8个字节的浮点数,它的精度比单精度浮点数更高,可以表示更大范围的数值。double关键字定义的变量可以存储双精度浮点数。例如:

```

double a = 3.14159265358979323846; // 定义一个双精度浮点数a,值为圆周率

```

  1.  else

else是C语言中的一个关键字,它用于在if语句中定义条件不成立时的执行代码块。当if语句的条件不成立时,程序会执行else语句中的代码。例如:

```

int main()

{

    int a = 10;

    if(a > 20)

    {

        printf("a is greater than 20\n");

    }

    else

    {

        printf("a is less than or equal to 20\n");

    }

    return 0;

}

```

  1.  enum

enum是C语言中的一个关键字,它用于定义枚举类型。枚举类型是一种用户自定义的类型,它可以列举出所有可能的取值。枚举类型通常用于定义程序中的常量,例如颜色、方向等。enum关键字定义的枚举类型可以用于定义枚举变量。例如:

```

enum color {red, green, blue}; // 定义一个颜色枚举类型

enum color c = red; // 定义一个颜色枚举变量c,值为red

```

  1.  extern

extern是C语言中的一个关键字,它用于声明外部变量。外部变量是指在其他文件中定义的变量,使用extern关键字可以在当前文件中引用这些变量。extern关键字常用于在多个文件中共享变量。例如:

在file1.c文件中定义一个变量a:

```

int a = 10;

```

在file2.c文件中引用变量a:

```

extern int a; // 声明变量a为外部变量

printf("%d\n", a); // 输出变量a的值

```

  1.  float

float是C语言中的一个关键字,它用于定义单精度浮点数。单精度浮点数是指在内存中占用4个字节的浮点数,它可以表示一定范围内的小数。float关键字定义的变量可以存储单精度浮点数。例如:

```

float a = 3.14; // 定义一个单精度浮点数a,值为3.14

```

  1.  for

for是C语言中的一个关键字,它用于定义循环语句。for语句通常用于执行一定次数的循环。for语句由三个部分组成:循环变量初始化、循环条件和循环变量更新。例如:

```

int main()

{

    int i;

    for(i = 0; i < 10; i++)

    {

        printf("%d\n", i);

    }

    return 0;

}

```

  1.  goto

goto是C语言中的一个关键字,它用于跳转到程序中的指定位置。goto语句可以用于跳过某些代码或者在程序中实现条件跳转。但是,过度使用goto语句会使程序变得难以理解和维护,因此在编写程序时应尽量避免使用goto语句。例如:

```

int main()

{

    int i = 0;

    loop:

    printf("%d\n", i);

    i++;

    if(i < 10)

    {

        goto loop;

    }

    return 0;

}

```

  1.  if

if是C语言中的一个关键字,它用于定义条件语句。if语句通常用于根据条件执行不同的代码块。if语句可以与else语句结合使用,实现更复杂的条件判断。例如:

```

int main()

{

    int a = 10;

    if(a > 20)

    {

        printf("a is greater than 20\n");

    }

    else if(a > 10)

    {

        printf("a is greater than 10 and less than or equal to 20\n");

    }

    else

    {

        printf("a is less than or equal to 10\n");

    }

    return 0;

}

```

  1.  int

int是C语言中的一个关键字,它用于定义整型变量。整型变量是指在内存中占用4个字节的变量,它可以存储整数值。int关键字定义的变量可以存储整型值。例如:

```

int a = 10; // 定义一个整型变量a,值为10

```

  1.  inline

inline是C语言中的一个关键字,它用于定义内联函数。内联函数是一种特殊的函数,它的代码会被直接插入到调用它的代码中,从而避免了函数调用的开销。inline关键字定义的函数可以被编译器优化为内联函数。例如:

```

inline int add(int a, int b)

{

    return a + b;

}

```

  1.  long

long是C语言中的一个关键字,它用于定义长整型变量。长整型变量是指在内存中占用8个字节的变量,它可以存储较大的整数值。long关键字定义的变量可以存储长整型值。例如:

```

long a = 1234567890; // 定义一个长整型变量a,值为1234567890

```

  1.  register

register是C语言中的一个关键字,它用于定义寄存器变量。寄存器变量是指在CPU寄存器中存储的变量,它可以更快地访问和处理。register关键字定义的变量可以存储在寄存器中,但是编译器可以选择不将变量存储在寄存器中。例如:

```

register int a = 10; // 定义一个寄存器变量a,值为10

```

  1.  restrict

restrict是C语言中的一个关键字,它用于指定指针所指向的内存区域是唯一的。唯一性指的是,该指针是访问该内存区域的唯一途径,不会有其他指针也指向该内存区域。这样可以帮助编译器进行更好的优化。restrict关键字只能用于指针类型。例如:

```

void func(int* restrict a, int* restrict b)

{

    *a = 10;

    *b = 20;

}

```

  1.  return

return是C语言中的一个关键字,它用于从函数中返回值。在函数执行过程中,如果遇到return语句,函数就会立即返回,并将指定的值作为返回值。return关键字只能用于函数中。例如:

```

int add(int a, int b)

{

    return a + b;

}

```

  1.  short

short是C语言中的一个关键字,它用于定义短整型变量。短整型变量是指在内存中占用2个字节的变量,它可以存储较小的整数值。short关键字定义的变量可以存储短整型值。例如:

```

short a = 10; // 定义一个短整型变量a,值为10

```

  1.  signed

signed是C语言中的一个关键字,它用于定义有符号整型变量。有符号整型变量可以存储正数、负数和零。signed关键字定义的变量可以存储有符号整型值。例如:

```

signed int a = -10; // 定义一个有符号整型变量a,值为-10

```

  1.  sizeof

sizeof是C语言中的一个关键字,它用于计算数据类型或变量所占用的字节数。sizeof关键字可以用于任何数据类型或变量,包括基本数据类型、数组、结构体等。例如:

```

int a = 10;

size_t size = sizeof(a); // 计算int类型变量a所占用的字节数

```

  1.  static

static是C语言中的一个关键字,它用于定义静态变量或函数。静态变量是指在程序运行期间一直存在的变量,它可以在函数内部或外部定义。静态函数是指只能在当前文件中使用的函数,它不会被其他文件所访问。static关键字只能用于变量或函数的定义中。例如:

```

void func()

{

    static int count = 0; // 定义一个静态变量count

    count++;

    printf("count: %d\n", count);

}

static void func2() // 定义一个静态函数func2

{

    printf("This is a static function.\n");

}

```

  1.  struct

struct是C语言中的一个关键字,它用于定义结构体类型。结构体是一种用户自定义的数据类型,它可以包含多个不同类型的成员变量,这些成员变量可以通过点号(.)访问。struct关键字只能用于结构体类型的定义中。例如:

```

struct student

{

    char name[20];

    int age;

    float score;

};

struct student s = {"Tom", 18, 90.5}; // 定义一个结构体变量s

printf("Name: %s, Age: %d, Score: %.2f\n", s.name, s.age, s.score);

```

  1.  switch

switch是C语言中的一个关键字,它用于编写多分支的选择结构。switch语句中的表达式会被依次与每个case语句中的常量进行比较,如果匹配成功,则执行该case语句中的代码。如果所有的case语句都不匹配,则执行default语句中的代码。switch关键字只能用于switch语句中。例如:

```

int a = 2;

switch(a)

{

    case 1:

        printf("a is 1.\n");

        break;

    case 2:

        printf("a is 2.\n");

        break;

    default:

        printf("a is not 1 or 2.\n");

        break;

}

```

  1.  typedef

typedef是C语言中的一个关键字,它用于定义新的数据类型。typedef可以将任何已有的数据类型定义为一个新的数据类型,这样可以使程序更加易读、易维护。typedef关键字只能用于数据类型的定义中。例如:

```

typedef int Integer; // 定义一个新的数据类型Integer,它是int的别名

Integer a = 10;

```

  1.  unsigned

unsigned是C语言中的一个关键字,它用于定义无符号类型的变量。无符号类型的变量只能取非负整数值,它们不会被解释为负数。unsigned关键字只能用于变量的定义中。例如:

```

unsigned int a = 10; // 定义一个无符号整型变量a

```

  1.  union

union是C语言中的一个关键字,它用于定义共用体类型。共用体是一种特殊的数据类型,它可以存储不同类型的数据,但同一时间只能存储其中的一种数据类型。共用体的成员变量共享同一块内存空间,它们的值会相互影响。union关键字只能用于共用体类型的定义中。例如:

```

union data

{

    int i;

    float f;

    char str[20];

};

union data d;

d.i = 10;

printf("i = %d, f = %f, str = %s\n", d.i, d.f, d.str);

d.f = 3.14;

printf("i = %d, f = %f, str = %s\n", d.i, d.f, d.str);

```

  1.  void

void是C语言中的一个关键字,它用于表示无类型。void类型的指针可以指向任何类型的数据,但它不能被解引用。void关键字可以用于函数的返回类型、函数的参数类型和指针类型的定义中。例如:

```

void func(void); // 定义一个返回类型为void、无参数的函数

void* ptr; // 定义一个void类型的指针

int a = 10;

ptr = &a;

```

  1.  volatile

volatile是C语言中的一个关键字,它用于告诉编译器一个变量是易变的。这意味着该变量的值可以在程序执行期间随时发生变化,因此编译器不能对该变量进行优化。volatile关键字可以用于变量的定义中。例如:

```

volatile int a = 10; // 定义一个易变的整型变量a

```

  1.  while

while是C语言中的一个关键字,它用于实现循环结构。while循环会在循环条件为真的情况下重复执行循环体中的代码,直到循环条件为假为止。while关键字只能用于循环语句中。例如:

```

int i = 0;

while(i < 10)

{

    printf("%d\n", i);

    i++;

}

```

  1.  _Bool

_Bool是C语言中的一个关键字,它用于定义布尔类型的变量。布尔类型的变量只能取true或false两个值。_Bool关键字可以用于变量的定义中。例如:

```

_Bool b = true; // 定义一个布尔类型的变量b

```

  1.  _Complex

_Complex是C语言中的一个关键字,它用于定义复数类型的变量。复数类型的变量包含实部和虚部两个部分,它们可以进行加、减、乘、除等运算。_Complex关键字可以用于变量的定义中。例如:

```

_Complex double c = 3.0 + 4.0i; // 定义一个复数类型的变量c

```

  1.  _Imaginary

_Imaginary是C语言中的一个关键字,它用于定义虚数类型的变量。虚数类型的变量包含实部和虚部两个部分,但与_Complex类型不同的是,_Imaginary类型的变量只有虚部,实部为0。_Imaginary关键字可以用于变量的定义中。例如:

```

_Imaginary double ci = 3.0i; // 定义一个虚数类型的变量ci

```

  1.  _Alignas

_Alignas是C语言中的一个关键字,它用于指定变量或类型的对齐方式。对齐方式是指变量在内存中的存储位置。_Alignas关键字可以用于变量或类型的定义中。例如:

```

_Alignas(16) int a; // 定义一个对齐方式为16字节的整型变量a

```

  1.  _Alignof

_Alignof是C语言中的一个关键字,它用于获取变量或类型的对齐方式。_Alignof关键字可以用于变量或类型的定义中。例如:

```

int a;

printf("a的对齐方式为%d字节\n", _Alignof(int)); // 输出a的对齐方式

```

  1.  _Atomic

_Atomic是C语言中的一个关键字,它用于定义原子类型的变量。原子类型的变量可以保证在多线程环境下的原子性,即对该变量的读写操作是原子的。_Atomic关键字可以用于变量的定义中。例如:

```

_Atomic int a; // 定义一个原子类型的整型变量a

```

  1.  _Static_assert

_Static_assert是C语言中的一个关键字,它用于在编译时检查某个条件是否成立。如果条件不成立,编译器会在编译时报错。_Static_assert关键字可以用于函数内或函数外的任何地方。例如:

```

_Static_assert(sizeof(int) == 4, "int类型必须为4字节"); // 检查int类型是否为4字节

```

  1.  _Noreturn

_Noreturn是C语言中的一个关键字,它用于告诉编译器一个函数不会返回。这在一些特殊情况下非常有用,比如在函数中调用exit函数或者死循环。_Noreturn关键字可以用于函数的定义中。例如:

```

_Noreturn void die(void) {

    exit(1); // die函数不会返回

}

```

  1.  _Thread_local

_Thread_local是C语言中的一个关键字,它用于定义线程局部变量。线程局部变量是指每个线程都有自己独立的变量副本,不同线程之间的变量互不干扰。_Thread_local关键字可以用于变量的定义中。例如:

```

_Thread_local int a; // 定义一个线程局部变量a

```

  1.  _Generic

_Generic是C语言中的一个关键字,它用于实现泛型编程。泛型编程是指编写与数据类型无关的代码,可以接受不同类型的数据作为参数。_Generic关键字可以用于函数的定义中。例如:

```

#define print(x) _Generic((x), \

    int: printf("%d", x), \

    double: printf("%f", x), \

    char*: printf("%s", x) \

)

print(10); // 输出10

print(3.14); // 输出3.14

print("hello"); // 输出hello

```

总结

_Static_assert、_Noreturn、_Thread_local和_Generic是C语言中常用的关键字,它们分别用于在编译时检查条件、告诉编译器一个函数不会返回、定义线程局部变量和实现泛型编程。

_Imaginary、_Alignas、_Alignof和_Atomic是C语言中常用的关键字,它们分别用于定义虚数类型的变量、指定变量或类型的对齐方式、获取变量或类型的对齐方式和定义原子类型的变量。

volatile、while、_Bool和_Complex是C语言中常用的关键字,它们分别用于告诉编译器一个变量是易变的、实现循环结构、定义布尔类型的变量和定义复数类型的变量。

typedef、unsigned、union和void是C语言中常用的关键字,它们分别用于定义新的数据类型、定义无符号类型的变量、定义共用体类型和表示无类型。

sizeof、static、struct和switch是C语言中常用的关键字,它们分别用于计算数据类型或变量所占用的字节数、定义静态变量或函数、定义结构体类型和编写多分支的选择结构。

restrict、return、short和signed是C语言中常用的关键字,它们分别用于指定指针所指向的内存区域是唯一的、从函数中返回值、定义短整型变量和定义有符号整型变量。

int、inline、long和register是C语言中常用的关键字,它们分别用于定义整型变量、定义内联函数、定义长整型变量和定义寄存器变量。

float、for、goto和if是C语言中常用的关键字,它们分别用于定义单精度浮点数、定义循环语句、跳转到程序中指定位置和定义条件语句。

double、else、enum和extern是C语言中常用的关键字,它们分别用于定义双精度浮点数、在if语句中定义条件不成立时的执行代码块、定义枚举类型和声明外部变量。

熟练掌握这些关键字的使用方法对于编写高效、可靠的C语言程序非常重要。

C进阶:https://blog.csdn.net/zhouruifu2015/category_5695139


更多资料 · 微信公众号搜索【CTO Plus】关注后,获取更多,我们一起学习交流。


关于Articulate“做一个知识和技术的搬运工。做一个终身学习的爱好者。做一个有深度和广度的技术圈。”一直以来都想把专业领域的技https://mp.weixin.qq.com/s/0yqGBPbOI6QxHqK17WxU8Q

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

SteveRocket

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

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

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

打赏作者

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

抵扣说明:

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

余额充值