当前位置: 首页 > article >正文

C语言中的关键字详细梳理

C语言中的关键字是C语言编译器预定义的、具有特殊意义的标识符。这些关键字不能用作变量名、函数名或其他标识符。下面是C99标准中定义的所有关键字及其定义与作用:

  1. auto:自动变量存储类别说明符。用于声明自动变量,即在函数内部声明的局部变量,如果不显式指定存储类别,则默认为auto。不过,在C语言中,auto关键字几乎从不使用,因为局部变量默认就是自动的。

  2. break:用于跳出最近的循环(forwhiledo-while)或switch语句。

  3. caseswitch语句的一部分,用于定义多个分支。

  4. char:数据类型,用于声明字符变量或数组。字符在C语言中是以整数形式存储的,但char类型用于表示字符。

  5. const:常量修饰符,用于声明一个常量。被const修饰的变量其值在初始化后不能被修改。

  6. continue:用于跳过当前循环的剩余部分,直接进入下一次循环迭代(在forwhiledo-while循环中)。

  7. defaultswitch语句的一部分,当没有任何case匹配时执行。

  8. dodo-while循环的开始。do-while循环至少执行一次,因为条件测试是在循环体执行之后进行的。

  9. double:数据类型,用于声明双精度浮点数变量或数组。

  10. elseif语句的一部分,当if条件不满足时执行else后面的代码块。

  11. enum:枚举类型声明。枚举是一种用户定义的类型,它包含一组命名的整数值。

  12. extern:用于声明一个变量或函数是在别的文件中定义的,或者是在当前文件的后面定义的。

  13. float:数据类型,用于声明单精度浮点数变量或数组。

  14. for:循环控制语句,用于重复执行一段代码固定次数或直到某个条件不再满足。

  15. goto:无条件跳转语句,用于跳转到程序中的另一个标签位置。虽然goto在某些情况下很有用,但通常不推荐使用,因为它会使程序流程变得难以理解和维护。

  16. if:条件语句,用于根据条件表达式的真假来执行不同的代码块。

  17. int:数据类型,用于声明整数变量或数组。

  18. long:数据类型,用于声明长整数变量或数组。在某些平台上,long类型可能比int类型占用更多的存储空间。

  19. register:建议编译器将变量存储在CPU的寄存器中以提高访问速度。然而,这个建议对现代编译器来说往往是多余的,因为编译器比程序员更了解如何优化代码。

  20. restrict:C99标准新增的关键字,用于告知编译器两个指针不会指向同一个内存位置,这有助于编译器进行更好的优化。

  21. return:用于从函数返回值。如果函数有返回类型(非void),则必须有一个return语句来返回该类型的值。

  22. short:数据类型,用于声明短整数变量或数组。与int相比,short类型通常占用更少的存储空间。

  23. signed:用于声明有符号整数类型(如signed int),但通常省略,因为int默认就是有符号的。

  24. sizeof:运算符,用于获取变量或数据类型所占用的字节数。

  25. static:静态变量存储类别说明符或函数修饰符。用于声明静态变量或函数,静态变量在程序的整个执行期间只被初始化一次,并且其值在函数调用之间保持不变。静态函数只能在其被声明的文件内部被调用。

  26. struct:结构体类型声明。结构体是一种复合数据类型,可以包含多个不同类型的成员。

  27. switch:多路分支选择语句,用于基于不同的条件执行不同的代码块。

  28. typedef:类型定义关键字,用于为现有的数据类型定义一个新的名字(别名)。

  29. union:联合体类型声明。联合体是一种特殊的数据类型,允许在相同的内存位置存储不同的数据类型,但一次只能存储其中一种类型的数据。

  30. unsigned:用于声明无符号整数类型(如unsigned int),无符号整数不能表示负数,但可以表示更大的正数。

  31. void:表示“无类型”。用于声明不返回值的函数,或作为函数的参数类型,表示该函数不接受任何参数。

  32. volatile:告诉编译器该变量的值可能会在程序的控制之外被改变(例如,被中断服务程序或操作系统改变)。这防止了编译器对该变量的优化(如缓存其值)。

  33. while:循环控制语句,用于在给定条件为真时重复执行一段代码。

  34. _Bool(C99新增)、_Complex(C99新增)、_Imaginary(C99新增):这些是C99标准引入的类型关键字,但在实际编程中较少直接使用,因为它们通常通过<stdbool.h><complex.h>等头文件提供的类型别名来访问(如boolcomplex)。

  35. _Alignas(C11新增)、_Alignof(C11新增)、_Atomic(C11新增)、_Generic(C11新增)、_Noreturn(C11新增)、_Static_assert(C11新增)、_Thread_local(C11新增):这些是C11标准引入的关键字或特性,用于支持更高级的功能,如对齐、原子操作、泛型选择、无返回函数声明、静态断言和线程局部存储。不过,请注意,_Alignas_Alignof_Atomic_Thread_local等通常以_开头的关键字是编译器特定的扩展,而C11标准通过_Alignasalignof(非_开头)、_Atomic(但通常使用<stdatomic.h>中的类型)、_Thread_local(但通常作为类型修饰符而非关键字)等方式提供了类似的功能。_Generic_Static_assert则是以_开头的关键字,但它们是C11标准的一部分。


http://www.kler.cn/a/317562.html

相关文章:

  • Vue.js 项目创建流程
  • Could not initialize class sun.awt.X11FontManager
  • 前端:块级元素和行内元素
  • uniapp使用scroll-view下拉刷新与上滑加载
  • 【最新版】Stable Diffusion4.9(AI绘画)下载及安装教程(附软件安装包)!
  • 【数据结构与算法】第11课—数据结构之选择排序和交换排序
  • 力扣76 最小覆盖子串 Java版本
  • 面试知识点总结篇三
  • Linux-网络编程
  • MySQL record 06 part
  • Chainlit集成LlamaIndex实现知识库高级检索(BM25全文检索器)
  • 爬虫的流程
  • vulnhub(13):Digitalworld.local JOY(ftp 的未授权文件读写漏洞、文件覆盖提权)
  • 获取商品销量详情API:深入解析返回值,助力电商决策
  • hrm人力资源管理系统,绩效,考勤,薪酬,五险一金,等全面人力管理(源码+配套方案)
  • Java面试篇基础部分-ReentrantLock详解
  • 应用密码学第一次作业(9.23)
  • 油耳朵怎么清理干净?双十一可视挖耳勺排行榜
  • Python注释
  • gitlab默认克隆地址的修改
  • react-native和原生android的交互
  • Mysql 架构
  • 武汉正向科技 格雷母线检测方式 :车检,地检
  • 78、Python之函数式编程:funcy,功能更加齐全的函数式编程库
  • 等位基因与碱基:异同点解析
  • MS SQL Server 实战 排查多列之间的值是否重复