10.24学习
1.const
在编程中, const 关键字通常用来定义一个常量。常量是程序运行期间其值不能被改变的变量。使用 const 可以提高代码的可读性和可靠性,因为它可以防止程序中意外修改这些值。
不同编程语言中 const 的用法可能略有不同,以下是一些常见的用法:
①C/C++:
在 C 语言中, const 关键字用于定义一个只读变量,其值在初始化后不能被改变。
在 C++ 中, const 可以用于变量、函数参数、成员函数等,表示它们不会修改对象的状态。
②JavaScript:
在 ES6(ECMAScript 2015)及以后的版本中, const 用于声明一个只读的常量。一旦一个常量被声明并初始化后,其值不能被重新赋值。
③Python:
Python 中没有 const 关键字,但通常约定使用全部大写的变量名来表示常量。
④Java:
Java 没有 const 关键字,但可以使用 final 关键字来声明一个不可变的变量。
⑤Swift:
Swift 中使用 let 来声明常量,一旦赋值后,其值不能被改变。
使用 const 的一个简单例子(以 JavaScript 为例):
const MAX_USERS = 100;
console.log(MAX_USERS); // 输出 100
// 下面的代码会抛出错误,因为 MAX_USERS 是一个常量,不能被重新赋值
// MAX_USERS = 200;
在不同的编程环境中, const 的具体行为和限制可能会有所不同,但基本概念是相似的。
2.printf()函数
printf() 函数是C语言中用于格式化输出的标准库函数,它定义在 stdio.h 头文件中。以下是 printf() 函数的一些关键知识点:
①函数原型:
int printf(const char *format, ...);
printf() 函数的第一个参数是一个格式字符串,后面的参数是可变数量的,根据格式字符串中的格式说明符来决定。
②格式字符串: 格式字符串包含了普通字符和格式说明符。普通字符直接输出,格式说明符用于指定后续参数的输出格式。
③格式说明符: 格式说明符以 % 开始,后面可以跟有:
标志字符(如 + 、 - 、 0 、 # 等)
宽度指定符(如 5d 表示至少5位宽)
精度指定符(如 .2f 表示小数点后两位)
长度修饰符(如 h 、 l 、 ll 等)
类型说明符(如 d 、 f 、 s 、 c 、 % 等)
④类型说明符:
%d 或 %i :整数( int 类型)
%u :无符号整数( unsigned int 类型)
%f :浮点数( float 或 double 类型)
%s :字符串( char 数组)
%c :字符( char 类型)
%x 或 %X :十六进制整数
%p :指针(显示为十六进制)
%% :输出百分号本身
⑤返回值: printf() 函数返回成功输出的字符数。如果发生错误,它返回一个负数。
⑥可变参数: printf() 函数使用C语言的可变参数机制,这允许函数接受不定数量的参数。
⑦使用例子:
printf("Integer: %d\n", 10);
printf("Float: %.2f\n", 3.14159);
printf("String: %s\n", "Hello, World!");
printf("Char: %c\n", 'A');
⑧格式化选项:
%+d :显示正负号
%05d :至少5位宽,不足补0
%-5d :左对齐输出
%5.2f :浮点数总宽度为5,小数点后两位
⑨错误处理: printf() 函数不会对错误的格式字符串进行报错,如果格式字符串与提供的参数不匹配,可能会导致不可预测的行为。
⑩安全性:
避免格式化字符串的注入攻击,确保格式字符串是受控的,不被用户输入直接控制。
对于用户提供的数据,使用 snprintf() 等安全版本的函数,以避免缓冲区溢出。
⑪与 sprintf() 的区别:
printf() 将格式化的数据输出到标准输出(通常是屏幕)。
sprintf() 将格式化的数据存储到一个字符串中,而不是输出到屏幕。
printf() 函数是C语言中非常基础且强大的工具,掌握它的使用对于进行有效的数据输出至关重要。
3.define
在C语言中, #define 是预处理指令,用于定义宏。以下是 #define 的一些关键知识点:
①预处理指令: #define 是预处理器的指令之一,它告诉预处理器在编译之前将宏名替换为宏定义的内容。
②宏定义: 使用 #define 可以定义宏,宏可以是简单的值,也可以是更复杂的表达式或代码片段。
③无类型: 与 const 不同, #define 定义的宏没有数据类型,它只是简单的文本替换。
④替换时机: 宏的替换发生在编译之前,预处理器会将代码中所有宏的引用替换为宏定义的内容。
⑤没有作用域: 与变量不同,宏没有块作用域,一旦定义,它将在定义它的文件及其包含的文件中有效,直到遇到 #undef 指令。
⑥多次包含问题: 由于宏没有作用域限制,如果一个头文件被多次包含,宏定义可能会被多次定义,导致编译错误。这通常通过使用条件编译来解决,例如:
#ifndef HEADER_FILE_H
#define HEADER_FILE_H
// 头文件内容
#endif
⑦宏与常量: 尽管宏可以用于定义常量,但推荐使用 const 或 enum 来定义常量,因为它们有类型且作用域受控。
⑧宏运算符: #define 可以与字符串化运算符 # 和标记粘贴运算符 ## 一起使用,以创建复杂的宏。
字符串化运算符 # 将宏参数转换为字符串。
标记粘贴运算符 ## 用于连接两个令牌。
⑨宏的参数: 宏可以接受参数,类似于函数,但它们在预处理阶段展开,而不是在运行时计算。
⑩宏的副作用: 由于宏的展开是简单的文本替换,可能会引入一些副作用,比如改变代码的语义或导致意外的编译错误。
⑪调试困难: 使用宏可能会使调试变得困难,因为宏的展开结果可能难以阅读,且在调试时看不到宏的值。
⑫宏与内联函数: 在C99标准中,可以使用 inline 关键字定义内联函数,这通常比宏更好,因为内联函数有类型检查,且编译器可以优化它们的调用。
⑬预定义的宏: 编译器会预定义一些宏,如 __LINE__ (当前行号)和 __FILE__ (当前文件名)。
⑭ #define 与 #undef : 使用 #undef 可以取消宏的定义,这在需要取消预定义宏或防止头文件多次包含时很有用。
使用 #define 时,应该谨慎以避免上述问题,并在可能的情况下考虑使用 const 或 enum 来定义常量。
相关文章:

10.24学习
1.const 在编程中, const 关键字通常用来定义一个常量。常量是程序运行期间其值不能被改变的变量。使用 const 可以提高代码的可读性和可靠性,因为它可以防止程序中意外修改这些值。 不同编程语言中 const 的用法可能略有不同,以下是一…...

社交媒体与客户服务:新时代的沟通桥梁
在数字化时代,社交媒体已成为人们日常生活中不可或缺的一部分,它不仅改变了人们的沟通方式,也深刻影响着企业的客户服务模式。从传统的电话、邮件到如今的社交媒体平台,客户服务的渠道正在经历一场前所未有的变革。社交媒体以其即…...

设置虚拟机与windows间的共享文件夹
在 VMware Workstation 或 VMware Fusion 中设置共享文件夹的具体步骤如下: 1. 启用共享文件夹 对于 VMware Workstation 打开 VMware Workstation: 启动 VMware Workstation,找到你要设置共享文件夹的虚拟机。 设置虚拟机: 选…...

微信小程序性能优化 ==== 合理使用 setData 纯数据字段
目录 1. setData 的流程 2. 数据通信 3. 使用建议 3.1 data 应只包括渲染相关的数据 3.2 控制 setData 的频率 3.3 选择合适的 setData 范围 3.4 setData 应只传发生变化的数据 3.5 控制后台态页面的 setData 纯数据字段 组件数据中的纯数据字段 组件属性中的纯数据…...

【加密系统】华企盾DSC服务台提示:请升级服务器,否则可能导致客户端退回到旧服务器的版本
华企盾DSC服务台提示:请升级服务器,否则可能导致客户端退回到旧服务器的版本 产生的原因:控制台版本比服务器高导致控制台出现报错 解决方案 方法:将控制台回退到原来的使用版本,在控制台负载均衡查看连接该服务器各个…...

直连南非,服务全球,司库直联再进一步
yonyou 在全球化经济背景下,中国企业不断加快“走出去”的步伐,寻求更广阔的发展空间。作为非洲大陆经济最发达的国家之一,南非以其丰富的自然资源、完善的金融体系和多元化的市场,成为中国企业海外投资与合作的热门目的地。 作为…...

【spring】从spring是如何避免并发下获取不完整的bean引发的思考 什么是双重检查锁 什么是java内存模型
本文将通过简述spring是如何避免并发下获取不完整的bean,延伸出双重检查锁、volatile、JMM的概念,将这些知识点都串联起来; 若发现错误,非常欢迎在评论区指出;csdn博主:孟秋与你 文章目录 双重检查锁(Doubl…...

【计算机网络一】网络学习前置知识
目录 网络中必备概念 1.什么是局域网与广域网? 2.什么是IP地址 3.什么是端口号 4.什么是协议 5.OSI七层模型 6.TCP/IP四层模型 网络中必备概念 本篇文章旨在分享一些计算机网络中的常见概念,对于初学者或者准备学习计算机网络的人会有帮助。 1.什么…...

nuScenes数据集使用的相机的外参和内参
因为需要用不同数据集测试对比效果,而一般的模型代码里实现的检测结果可视化都是使用open3d的Visualizer在点云上画的3d框,展示出来的可视化效果很差,可能是偷懒,没有实现将检测结果投影到各相机的图像上,所以检测效果…...

数据结构与算法:贪心算法与应用场景
目录 11.1 贪心算法的原理 11.2 经典贪心问题 11.3 贪心算法在图中的应用 11.4 贪心算法的优化与扩展 总结 数据结构与算法:贪心算法与应用场景 贪心算法是一种通过选择当前最佳解来构造整体最优解的算法策略。贪心算法在很多实际问题中都取得了良好的效果&am…...

音频编解码器音频文件格式
0 Preface/Foreword 1 音频编解码器 算法压缩越高,那么音频延迟越大,音频效果越好。 1.1 SBC SBC: sub-band coding,自带编码 A2DP强制规定使用的audio编解码器。 在音视频中,为了增加用户体验,规避视频和音频的不…...

FreeSWITCH JSON API
仅举几例: fs_cli -x json {"command" : "status", "data" : ""} fs_cli -x json {"command" : "sofia.status", "data" : ""} fs_cli -x json {"command" : "…...

学习docker第三弹------Docker镜像以及推送拉取镜像到阿里云公有仓库和私有仓库
docker目录 1 Docker镜像dockers镜像的进一步理解 2 Docker镜像commit操作实例案例内容是ubuntu安装vim 3 将本地镜像推送至阿里云4 将阿里云镜像下载到本地仓库5 后记 1 Docker镜像 镜像,是docker的三件套之一(镜像、容器、仓库)࿰…...

一文掌握Kubernates核心组件,构建智能容器管理集群
1.Kubernates简要概述 Kubernates(常称为K8s,因省略了“ubernate”中的8个字符)是Google开源的容器编排平台,专为简化和自动化应用服务的部署、扩展和管理而设计。它将应用与底层的服务器抽象开来,提供了自动化的机制…...

正则表达式快速入门
正则表达式是由一系列元字符(Meta-characters)组成的模式,用于定义搜索或替换文本的规则。元字符具有特殊含义,用于指定搜索模式的结构。以下是一些常用的正则表达式元字符及其功能: 字符匹配符 符号含义.匹配除 \r\…...

【小程序】-基础语法(二)
文章目录 知识回顾前言微信小程序开发一、模板语法2.1 数据绑定2.2 条件渲染2.3 列表渲染三、内置API3.1 网络请求3.2 界面交互3.3 本地存储3.4 API 特征3.5 相册/拍照3.6 小练习四、事件处理4.1 事件对象4.2 组件事件五、生命周期5.1 页面生命周期5.2 应用生命周期知识回顾 前…...

js 填充数组
let arr Array.from({ length: 10 }, (_, index) > index)console.log(arr) 人工智能学习网站 https://chat.xutongbao.top...

AI创作3款软件分享,助力内容创作者高效产出优质作品
为了增加创造力和作品质量,许多创作者开始利用人工智能辅助工具。这些工具不仅可以帮助我们迅速生成各种类型的内容,例如文章、绘画、视频广告等,还提供语法检查和优化建议等实用功能。本文将向大家推荐三款适用于Ai先行者、Tracup、Adoe Fir…...
A survey of loss functions for semantic segmentation——论文笔记
摘要 图像分割一直是一个活跃的研究领域,因为它有着广泛的应用范围,从自动疾病检测到自动驾驶汽车。过去五年中,各种论文提出了用于不同场景(如数据偏斜、稀疏分割等)的目标损失函数。在本文中,我们总结了…...

docker部署es与kibana Mac
1. 创建网络 神一样的链接,不用谢: 1.Docker命令链接:黑马整理的docker速成链接 2.jdk11链接:jdk11 3.神资源链接:别点,要脸 注意:es需要先安装jdk环境,推荐jdk11,否则…...

redis的渐进式哈希?说一下细节?------面试题分享
渐进式哈希(Progressive Hashing)是 Redis 中的一种优化机制,用于在执行 HGETALL 命令时逐步读取哈希表中的所有字段。这种机制避免了一次性加载大量数据到内存,从而减少了内存消耗和提高系统的响应速度。 渐进式哈希的背景 在 R…...

javaWeb项目-springboot+vue-车辆管理系统功能介绍
本项目源码(点击下方链接下载):java-springbootvue车辆管理系统源码(项目源码-说明文档)资源-CSDN文库 项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm、Springboot 前端࿱…...

redis和memcached的区别
Redis和Memcached都是流行的内存缓存数据库,但它们有一些区别: 数据类型:Redis支持更多的数据类型,包括字符串、哈希、列表、集合和有序集合等,而Memcached只支持简单的键值对。 持久化:Redis支持数据的持…...

构建安全基石:网络安全等级保护定级指南
在数字化时代,网络安全已成为企业与个人不可忽视的重要课题。网络安全等级保护定级指南,作为国家指导网络安全保护的重要文件,为各类机构提供了精准的安全防护蓝图。本文旨在深度解析网络安全等级保护定级指南的精髓,助力建构全面…...

PyQt 入门教程(3)基础知识 | 3.1、使用QtDesigner创建.ui文件
文章目录 一、使用QtDesigner创建.ui文件1、创建.ui文件2、生成.py文件3、使用新生成的.py文件4、编辑新生成的.py文件 一、使用QtDesigner创建.ui文件 1、创建.ui文件 打开PyCharm,使用自定义外部工具QtDesigner创建mydialog.ui文件,如下: …...

解锁金融大门,你的基从备考秘籍全揭秘!
大家好!随着金融行业的快速发展,基金从业资格证已经成为越来越多金融从业者的必备证书。为了帮助大家更好地备考,今天我们就来聊聊基金从业资格证! 一、考试时间 2024年下半年基金从业资格考试时间为11月9日。准考证打印的时间是…...

详解Linux系统中的设备驱动程序.ko文件
目录 一、主要特点: 二、常见用法: 三、典型应用: 设备驱动程序、文件系统、网络协议、内核安全模块等都可能以 .ko 文件的形式存在。 .ko 文件是 Linux 内核模块的文件扩展名,表示 "kernel object"。这些文…...

MG协议转换器:高效连接,智控未来
在当今自动化和工业4.0浪潮中,设备间的无缝连接和数据高效传输成为提升生产效率、保障系统稳定运行的关键。我们凭借在工业自动化领域的深厚积累与创新精神,推出了MG系列一体式协议转换器,为不同协议总线之间的通讯架起了一座坚实的桥梁。 产…...

pycharm设置自动格式化代码
1.手动格式化代码: 在PyCharm中,您可以使用快捷键Ctrl + Alt + L来格式化当前文件中的代码。此操作将根据PyCharm默认的代码风格规则对代码进行格式化。 您也可以在“File”菜单中选择“Reformat Code”选项来进行格式化。 2.自动格式化代码 2.1 安装File Watchers插件 F…...

AI应用程序低代码构建平台Langflow
什么是 Langflow ? Langflow 是一款适用于 RAG 和多智能体 AI 应用程序的低代码应用构建器。它基于 Python,并且与任何模型、API 或数据库无关。 软件的核心功能 基于 Python 并且与模型、API、数据源或数据库无关。可视化集成开发环境,支持拖放构建和…...