C语言面试之旅:掌握基础,探索深度(面试实战之c语言关键词下篇)

一.枚举( enum)

        枚举是 C 语言中的一种基本数据类型,用于定义一组具有离散值的常量,它可以让数据更简洁,更易读。枚举类型通常用于为程序中的一组相关的常量取名字,以便于程序的可读性和维护性。定义一个枚举类型,需要使用 enum 关键字,后面跟着枚举类型的名称,以及用大括号 {} 括起来的一组枚举常量。每个枚举常量可以用一个标识符来表示,也可以为它们指定一个整数值,如果没有指定,那么默认从 0 开始递增。

枚举语法定义格式为: enum 枚举名 {枚举元素1,枚举元素2,……};

例子:

enum DAY
{MON=1, TUE, WED, THU, FRI, SAT, SUN
};

注解:

        第一个枚举成员的默认值为整型的 0,后续枚举成员的值在前一个成员上加 1。我们在这个实例中把第一个枚举成员的值定义为 1,第二个就为 2,以此类推。

二.共用体(union)

         共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值。共用体提供了一种使用相同的内存位置的有效方式。

        为了定义共用体,您必须使用 union 语句,方式与定义结构类似。union 语句定义了一个新的数据类型,带有多个成员。union 语句的格式如下:

union [union tag]
{member definition;member definition;...member definition;
} [one or more union variables];

         union tag 是可选的,每个 member definition 是标准的变量定义,比如 int i; 或者 float f; 或者其他有效的变量定义。在共用体定义的末尾,最后一个分号之前,您可以指定一个或多个共用体变量,这是可选的。

例子:

union Data
{int i;float f;char  str[20];
} data;

 注解:

        Data 类型的变量可以存储一个整数、一个浮点数,或者一个字符串。这意味着一个变量(相同的内存位置)可以存储多个多种类型的数据。您可以根据需要在一个共用体内使用任何内置的或者用户自定义的数据类型。共用体占用的内存应足够存储共用体中最大的成员。例如,在上面的实例中,Data 将占用 20 个字节的内存空间,因为在各个成员中,字符串所占用的空间是最大的。

三.关键词集合(你都用了几个)

 

  1. int:表示整数类型。
  2. char:表示字符类型。
  3. float:表示单精度浮点数类型。
  4. double:表示双精度浮点数类型。
  5. void:表示无类型,常用于函数返回值。
  6. true:表示真值,布尔类型。
  7. false:表示假值,布尔类型。
  8. if:表示条件语句。
  9. else:表示条件语句的另一种选择。
  10. switch:表示开关语句。
  11. case:表示开关语句中的一种选择。
  12. break:表示跳出循环或开关语句。
  13. continue:表示跳过当前循环的剩余部分,继续下一个循环。
  14. while:表示循环语句。
  15. do-while:表示循环语句,至少执行一次,然后检查条件。
  16. for:表示循环语句,通常用于已知迭代次数的循环。
  17. goto:表示无条件跳转语句。
  18. sizeof:表示操作对象所占用的字节数。
  19. const:表示常量,即不可修改的值。
  20. static:表示静态变量或函数,即只在定义它的文件内有效。
  21. volatile:表示易变的变量,即可能会被外部因素改变。
  22. inline:表示内联函数,即将函数调用替换为函数体中的代码。
  23. extern:表示外部变量或函数,即在其他文件中定义,但在当前文件中声明。
  24. typedef:表示类型定义,用于创建新的类型名称。
  25. struct:表示结构体类型,用于组合不同类型的变量。
  26. union:表示联合体类型,用于共享内存的结构体。
  27. enum:表示枚举类型,用于创建枚举类型的名称和枚举常量。
  28. long:表示长整数类型。
  29. short:表示短整数类型。
  30. signed:表示有符号类型,即可以表示正数和负数。
  31. unsigned:表示无符号类型,即只能表示非负数。
  32. main:表示程序的入口函数。
  33. NULL:表示空指针,即没有指向任何对象的指针。
  34. true:表示真值,布尔类型。
  35. false:表示假值,布尔类型。
  36. sizeof:表示操作对象所占用的字节数。
  37. const:表示常量,即不可修改的值。
  38. static:表示静态变量或函数,即只在定义它的文件内有效。
  39. volatile:表示易变的变量,即可能会被外部因素改变。
  40. inline:表示内联函数,即将函数调用替换为函数体中的代码。
  41. extern:表示外部变量或函数,即在其他文件中定义,但在当前文件中声明。
  42. typedef:表示类型定义,用于创建新的类型名称。
  43. struct:表示结构体类型,用于组合不同类型的变量。
  44. union:表示联合体类型,用于共享内存的结构体。
  45. enum:表示枚举类型,用于创建枚举类型的名称和枚举常量。
  46. auto:表示自动变量,即由编译器自动分配内存空间的变量。
  47. register:表示寄存器变量,即存储在CPU寄存器中的变量,以提高访问速度。
  48. void:表示无类型,常用于函数返回值。
  49. const:表示只读变量,即变量的值不能被修改。
  50. inline:表示内联函数,即将函数调用替换为函数体中的代码,以提高执行效率。
  51. break:表示跳出循环或开关语句。
  52. case:表示开关语句中的一种选择。
  53. char:表示字符类型。
  54. default:表示开关语句中的默认选项。
  55. double:表示双精度浮点数类型。
  56. float:表示单精度浮点数类型。
  57. if:表示条件语句。
  58. int:表示整数类型。
  59. long:表示长整数类型。
  60. short:表示短整数类型。
  61. signed:表示有符号类型,即可以表示正数和负数。
  62. unsigned:表示无符号类型,即只能表示非负数。
  63. while:表示循环语句。
  64. do-while:表示循环语句,至少执行一次,然后检查条件。
  65. for:表示循环语句,通常用于已知迭代次数的循环。
  66. continue:表示跳过当前循环的剩余部分,继续下一个循环。
  67. goto:表示无条件跳转语句。
  68. sizeof:表示操作对象所占用的字节数。
  69. static:表示静态变量或函数,即只在定义它的文件内有效。
  70. volatile:表示易变的变量,即可能会被外部因素改变。
  71. extern:表示外部变量或函数,即在其他文件中定义,但在当前文件中声明。
  72. typedef:表示类型定义,用于创建新的类型名称。
  73. struct:表示结构体类型,用于组合不同类型的变量。
  74. union:表示联合体类型,用于共享内存的结构体。
  75. enum:表示枚举类型,用于创建枚举类型的名称和枚举常量。
  76. long double:表示双精度浮点数类型,精度高于double类型。
  77. unsigned long:表示无符号长整数类型。
  78. signed long:表示有符号长整数类型。
  79. unsigned short:表示无符号短整数类型。
  80. signed short:表示有符号短整数类型。
  81. wchar_t:表示宽字符类型,用于存储Unicode字符。
  82. bool:表示布尔类型,可以表示真或假。
  83. true:表示真值,布尔类型。
  84. false:表示假值,布尔类型。
  85. thread_local:表示线程局部变量,即每个线程都有该变量的独立副本。
  86. alignas:表示指定变量或类型的对齐方式。
  87. alignof:表示操作对象所需的最小对齐字节数。
  88. noexcept:表示函数不抛出异常。
  89. synchronized:表示对象在多线程环境中是线程安全的。
  90. inline:表示内联函数,即将函数调用替换为函数体中的代码,以提高执行效率。
  91. noexcept(true):表示函数不会抛出异常,如果抛出异常,则程序将终止。
  92. noexcept(false):表示函数可能会抛出异常,调用者需要处理异常。
  93. thread_local_storage:表示线程局部存储区,即每个线程都有该变量的独立副本。
  94. atomic:表示原子类型,用于多线程并发访问时的同步操作。
  95. mutable:表示变量可以在const上下文中被修改。
  96. thread_safe:表示对象在多线程环境下是安全的。
  97. noexcept2:表示函数不抛出异常,并且不执行任何动态分配内存的操作。
  98. thread_local_init:表示线程局部变量的初始化。
  99. constexpr:表示编译时常量,即在编译时计算结果。
  100. alignof(max):表示操作对象所需的最小对齐字节数,最大值取决于实现。
  101. noexcept(throw):表示函数不会抛出异常,如果抛出异常,则程序将终止,并立即抛出异常。
  102. noreturn:表示函数不会返回,通常用于标记终止程序的函数。
  103. export:表示函数或变量可以被其他模块访问。
  104. import:表示引入其他模块的函数或变量。
  105. macro:表示宏定义,用于替换代码片段。
  106. define:表示定义宏,用于替换代码片段。
  107. typedef:表示类型定义,用于创建新的类型名称。
  108. using:表示使用命名空间中的名称。
  109. namespace:表示命名空间,用于组织代码。
  110. class:表示类定义,用于定义对象的结构和行为。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/183706.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能客服核心技术——预测会话与答案生成

1.信息检索 2. 句型模板匹配标准问题生成答案 3.根据知识图谱推理得到答案

vue发送请求携带token,拼接url地址下载文件

封装请求 ,该请求为普通的get请求 该请求返回值为: 请求成功之后拼接URL地址下载文件 代码块 downTemplateRequest(activeKeys.value).then((res) > {let url http://47.169.168.99:18888/media/${res.data.name};var elink document.createElemen…

ApiSix的docker 容器化部署及使用

⼀.etcd安装 Docekr安装Etcd 环境准备 此处安装,是利⽤下载的 etcd 源⽂件,利⽤ docker build 构建完整镜像,具体操作如下: 1.环境准备 1.1. 新建⽂件夹 在磁盘某个路径下新建⼀个⽂件夹,⽤处操作 Dockerfi…

LeetCode 设计前中后队列

题目 1670. 设计前中后队列 请你设计一个队列,支持在前,中,后三个位置的 push 和 pop 操作。 请你完成 FrontMiddleBack 类: FrontMiddleBack() 初始化队列。void pushFront(int val) 将 val 添加到队列的 最前面 。void pushMidd…

Linux系统平均负载

我们经常会使用 top 命令来查看系统的性能情况,在 top 命令的第一行可以看到 load average 这个数据,如下图所示: load average 包含 3 列,分别表示 1 分钟、5 分钟和 15 分钟的 系统平均负载 系统平均负载: 如果将 …

如何扩展服务器存储容量_Maizyun

如何扩展服务器存储容量 随着互联网和数据的快速发展,服务器存储容量往往成为限制业务发展的重要因素。 如何有效扩展服务器的存储容量以满足业务需求是很多公司和个人需要面对的问题。 本文将探讨如何扩展服务器的存储容量来解决存储空间不足的问题。 1.了解存储…

golang—kafka架构原理快速入门以及自测环境搭建(docker单节点部署)

kafka Apache Kafka 是一个分布式的流处理平台。它具有以下特点: 支持消息的发布和订阅,类似于 RabbtMQ、ActiveMQ 等消息队列支持数据实时处理能保证消息的可靠性投递支持消息的持久化存储,并通过多副本分布式的存储方案来保证消息的容错高…

【华为交换】交换机MSTP+VRRP配置

功能简介 企业用户访问外网的流量,可能会同时包含二层流量和三层流量(例如,企业内二层VPN用户和三层VPN用户访问MPLS公网)。企业用户希望接入网络既能包含多条接入链路(不同链路之间互为备份)以保障接入的…

【brpc学习实践十一】session-local与thread-local应用与brpc抽象工厂模式实践

什么是session-local与thread-local 百度内的检索程序大量地使用了thread-local storage (缩写TLS),有些是为了缓存频繁访问的对象以避免反复创建,有些则是为了在全局函数间隐式地传递状态。你应当尽量避免后者,这样的函数难以测试,不设置thread-local变量甚至无法运行。s…

哪些因素会影响香港服务器的下载速度_Maizyun

哪些因素会影响香港服务器的下载速度? 随着互联网的普及和快速发展,越来越多的企业和个人选择使用香港服务器来托管其网站、应用程序和其他在线服务。 然而,很多因素可能会影响香港服务器的下载速度。 本文将探讨影响香港服务器下载速度的几…

Java中xml映射文件是干什么的

Java中的XML映射文件主要用于将Java对象与XML文档之间进行转换。它通常用于处理数据交换和存储,例如将Java对象转换为XML格式以便在网络上传输或保存到文件中,或者将XML文档解析为Java对象以进行处理。这种转换可以通过Java的JAXB(Java Archi…

springMVC实验(二)—调式工具APIFOX的使用

【知识要点】 后端开发调试工具 前后端分离已经成为互联网类软件开发主流模式,没有前端操作的支持,如何调试后端程序的就是开发人员必须解决的问题。如:get类请求可以直接使用浏览器就能模拟测试,但是post、put等类型的请求&…

layui 日期选择框弹出后消失

原因是窗口太小,日期窗碰撞边缘后会消失,解决方法是增加 trigger: click 属性。 laydate.render({ elem: #kp_date , type: date , trigger: click });

thinkphp5.1 验证器

thinkPHP5——验证器的使用总结-CSDN博客

YoloV8改进策略:AKConv即插即用,轻松涨点

文章目录 摘要1、引言2、相关工作3、方法3.1、定义初始采样位置3.2、可变卷积操作3.3、扩展AKConv4、实验4.1、在COCO2017上的目标检测实验4.2、在VOC 7+12上的目标检测实验4.3、在VisDrone-DET2021上的目标检测实验4.4、比较实验4.5、探索初始采样形状5、分析讨论6、结论Yolov…

数据结构与算法-D1数据结构引入

1、结构体 2、内存(malloc) 意义: 1、提高编程能力 2、可复用性、可维护性、可读性、效率更高 数据结构:研究数据之间关系,包括逻辑结构、存储结构、数据操作 逻辑结构: 按每个元素可能具有的直接前趋数和直接后趋数将逻辑结构…

Ubuntu 环境下 NFS 服务安装及配置使用

需求:公司内部有多台物理服务器,需要A服务器上的文件让B服务器访问,也就是两台服务器共享文件,当然也可以对A服务器上的文件做权限管理,让B服务器只读或者可读可写 1、NFS 介绍 NFS 是 Network FileSystem 的缩写&…

前端纯js导入导出json配置文件

在做后台系统需求的时候,有个需求是需要把当前表单配置导出,在另一个配置项下,导入这些配置,相当于做了一下配置拷贝。通常我们导出下载一个文件,是先向后端发起请求,由后端处理数据后,再返回文…

交调与互调

交调与互调 概念参考: 《高频电子线路》张肃文 《射频技术》于宝明、丁宁 交调(Cross-modulation) 如果接收机的前端电路选择性不够好,是有用信号与干扰信号同时加到接收机的输入端,而且这两种信号都是受音频调制…

jvm 调优参数

-XX:AlwaysPreTouch 指定JVM启动时即刻分配整个堆内存空间;应用启动会变慢,但是运行时变快。 -XX:MaxRAMPercentage60.0 指定JVM最大堆内存使用比例为60%;适用于容器部署 -XX:MinRAMPercentage60.0 指定JVM最小堆内存使用比例为60%&#xff1…