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

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:表示类定义,用于定义对象的结构和行为。

相关文章:

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

一.枚举( enum) 枚举是 C 语言中的一种基本数据类型,用于定义一组具有离散值的常量,它可以让数据更简洁,更易读。枚举类型通常用于为程序中的一组相关的常量取名字,以便于程序的可读性和维护性。定义一个枚…...

Java学习第十三天

Java多态 多态是同一个行为具有多个不同表现形式或形态的能力。 多态就是同一个接口,使用不同的实例而执行不同操作 多态性是对象多种表现形式的体现。 多态的优点 1. 消除类型之间的耦合关系2. 可替换性3. 可扩充性4. 接口性5. 灵活性6. 简化性 多态存在的三个…...

【Delphi】实现彩色日志显示框(TRichEdit Helper)

目录 一、前言 二、实现方法 1. 第一步 2. 第二步 3. 第三步 三、主程序代码 四、下载 1. 可执行程序 2. 程序源代码 一、前言 在用Delphi做日常开发的时候,经常需要显示程序运行的日志,一般我们会使用TMemo,使用起来简单&#xff0c…...

Elasticsearch 优化查询中获取字段内容的方式,性能提升5倍!

1、背景 集群配置为:8 个 node 节点,16 核 32G,索引 4 分片 1 副本。应用程序的查询逻辑是按经纬度排序后找前 200 条文档。 1、应用对查询要求比较高,search 没有慢查询的状态。 2、集群压测性能不能上去,cpu 使用未打…...

图像批量设计软件Retrobatch Pro mac中文版功能特色

Retrobatch Mac是一款灵活的批量图像处理工具。用户可以自由创建Workflow来实现相应的功能,这些Workflow能取代大量的重复劳动,提高生产力。Retrobatch Mac的一般操作是从左边栏拖动相应动作到工作区形成节点(Nodes),节…...

python第3天之函数

深入理解 Python 中的函数 简介 在编程中,函数是组织和复用代码的基本单元。Python 作为一门高级编程语言,提供了丰富的函数特性来帮助开发者编写清晰、模块化和高效的代码。在本文中,我们将深入探讨 Python 函数的定义、调用、参数、返回值…...

SQL Server 数据库,为products表添加数据

在插入数据的时候,需要注意以下事项。 > 每次插入一整行数据,不可能只插入半行或几列数据。 > 数据值的数目必须与列数相同,每个数据值的数据类型、精度和小数位数也必须与相应的 列匹配。 > INSERT语句不能为标识列指定值&#…...

C语言结构体详解(二)(能看懂文字就能明白系列)文章很长,慢慢品尝

系列文章目录 第一章 结构体的介绍和基本使用 🌟 个人主页:古德猫宁- 🌈 信念如阳光,照亮前行的每一步 文章目录 系列文章目录🌈 *信念如阳光,照亮前行的每一步* 前言前面一篇文章主要介绍了结构体的基础…...

WPF不使用AllowsTransparency实现高性能透明背景异形窗体

前言 最近在WPF项目中使用到异形窗体结合Webbroswer组件做web界面的公告展示,当时不想太麻烦引入Cef组件,就想用自带的Webbroswer来做展示,为了美观还做了异形窗体,结果测试就杯具了,自带的Webbroswer在AllowsTransparency=“True” 模式下根本就无法显示,界面一片空白,…...

唯创知音WT2605C语音芯片MP3音频IC:轻松实现指令随机播放与无缝循环播放等功能

在现代化的电子产品中,音频功能的重要性日益凸显。无论是智能家居、玩具、医疗设备还是仪器仪表,富有吸引力的音效与语音提示都能显著提升用户体验。唯创知音WT2605C语音芯片MP3音频IC便是为了满足这一需求而诞生的,它具备指令随机播放、无缝…...

uniapp+微信小程序监听返回事件

代码附在最后 适用场景:uniapp开发微信小程序 需求是我点击列表进入数据信息的详情界面,点击详情界面的收藏,返回上一界面后,更新列表中的收藏情况。 目录 一、使用onUnload监听页面卸载 二、使用getCurrentPages()获取当前页…...

Python函数的高级用法

Python 的函数是“一等公民”,因此函数本身也是一个对象,函数既可用于赋值,也可用作其他函数的参数,还可作为其他函数的返回值。 使用函数变量 Python 的函数也是一种值:所有函数都是 function 对象,这意…...

excel单元格内换行按什么快捷键

如果我们使用excel软件的时候,因为一些日常的操作太过繁琐想要简化自己的操作步骤的话,其实是有很多快捷方式在其中的。那么对excel单元格内换行按什么快捷键这个问题,据小编所知我们可以在表格中使用Alt Enter来进行换行。详细内容就来看下…...

docker容器内部文件挂载主机

docker images执行该命令可以发现一个centos镜像 docker run --namemycentos -itd --privilegedtrue --restartalways -p 88:80 -v C:\Users\Administrator\Desktop\dockerTest:/bin/gh:ro centosdocker run 命令用于在 Docker 上创建和运行容器。 --namemycentos 指定容器…...

python 实现一个简单的计算器

python 实现一个简单的计算器 本文主要整合下tkinter ,实现下简单的计算器. 代码如下: #!/usr/bin/python3 # -*- coding: UTF-8 -*- """Author: zhTime 2023/12/2 下午13:01 .Email:Describe: """ import tkinter as tk# 创建计算器窗口 ro…...

前端对浏览器的理解

浏览器的主要构成 用户界面 - 包括地址栏、后退/前进按钮、书签目录等,也就是你所看到的除了用来显示你所请求页面的主窗口之外的其他部分。 浏览器引擎 - 用来查询及操作渲染引擎的接口。 渲染引擎 - 用来显示请求的内容&#…...

Linux(openssl):X509_verify通过ca证书的public key验证证书的签名

/docs/man3.0/man3/X509_verify.html (openssl.org) 提供了方法用于通过ca证书的public key验证证书的签名 //verify_cert.hpp #include <string> #include <memory> #include <filesystem> #include <openssl/pem.h>using namespace std; namespace …...

全面的.NET微信网页开发之JS-SDK使用步骤、配置信息和接口请求签名生成详解

JSSDK使用步骤 步骤一:绑定安全域名&#xff1a; 先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。 步骤二:引入JS文件&#xff1a; 在需要调用JS接口的页面引入如下JS文件&#xff0c;&#xff08;支持https&#xff09;&#xff1a;http://…...

深入了解汉字转拼音转换工具:原理与应用

一、引言 汉字作为世界上最古老、最具象形意的文字之一&#xff0c;承载了数千年的历史文明。然而&#xff0c;在现代信息技术环境下&#xff0c;汉字的输入、输出和检索等方面存在一定的局限性。拼音作为汉字的一种音标表达方式&#xff0c;能够有效地解决这些问题。本文将为…...

沈阳师范大学期末考试复习pta循环数组函数指针经典编程题汇总+代码分析

目录 前言&#xff1a;临近期末&#xff0c;接下来给大家分享一些经典的编程题&#xff0c;方便大家复习。不一定难&#xff0c;但都是入门的好题&#xff0c;尽可能的吃透彻。因为据说期末考试的题很多来自pta上面的原题。 对于一些语言我是用c来写的&#xff0c;不妨碍理解…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

Modbus RTU与Modbus TCP详解指南

目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...