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

函数设计—参数规则

【规则1-1】参数的书写要完整,不要贪图省事只写参数的类型而省略参数名字。 如果函数没有参数,则用 void 填充。 例如:

void SetValue(int width, int height); // 良好的风格 
void SetValue(int, int);			  // 不良的风格
float GetValue(void); 				  // 良好的风格
float GetValue();					  // 不良的风格

【规则1-2】参数命名要恰当,顺序要合理。

例如编写字符串拷贝函数 StringCopy,它有两个参数。如果把参数名字起为 str1str2,例如

 void StringCopy(char *str1, char *str2);

那么我们很难搞清楚究竟是把 str1 拷贝到 str2 中,还是刚好倒过来。 可以把参数名字起得更有意义,如叫 strSourcestrDestination。这样从名字上就可以看出应该把 strSource 拷贝到 strDestination

还有一个问题,这两个参数那一个该在前那一个该在后?参数的顺序要遵循程序员的习惯。一般地,应将目的参数放在前面,源参数放在后面。 如果将函数声明为:

void StringCopy(char *strSource, char *strDestination);

别人在使用时可能会不假思索地写成如下形式:

char str[20]; 
StringCopy(str, “Hello World”); // 参数顺序颠倒

【规则1-3】如果参数是指针,且仅作输入用,则应在类型前加 const,以防止该 指针在函数体内被意外修改。 例如:

void StringCopy(char *strDestination,const char *strSource);

【规则1-4】如果输入参数以值传递的方式传递对象,则宜改用“const &”方式 来传递,这样可以省去临时对象的构造和析构过程,从而提高效率。


【建议1-1】避免函数有太多的参数,参数个数尽量控制在 5 个以内。如果参数太多,在使用时容易将参数类型或顺序搞错。
【建议1-2】尽量不要使用类型和数目不确定的参数。

C 标准库函数 printf 是采用不确定参数的典型代表,其原型为:

 int printf(const chat *format[, argument]⋯);

这种风格的函数在编译时丧失了严格的类型安全检查

相关文章:

函数设计—参数规则

【规则1-1】参数的书写要完整,不要贪图省事只写参数的类型而省略参数名字。 如果函数没有参数,则用 void 填充。 例如: void SetValue(int width, int height); // 良好的风格 void SetValue(int, int); // 不良的风格 float GetValue(…...

rsync远程同步

目录 rsync rsync简介 rsync优点 同步方式 rsync名词解释 rsync工作原理 常用rsync命令 配置源的两种表达方法 远程同步实操 如何不想每次登录的时候输入密码 同步删除文件 定时完成操作 格式二 指定资源下载到/opt进行备份 通过信道协议同步数据​编辑​编辑 rs…...

中国大陆IP段(仅大陆地区)【2020-07-24】

中国大陆IP段(仅大陆地区)【2020-07-24】 1.1.8.0/24 1.2.4.0/24 1.8.1.0/24 1.8.8.0/24 1.18.128.0/24 1.24.0.0/13 1.45.0.0/16 1.48.0.0/14 1.56.0.0/13 1.68.0.0/14 1.80.0.0/13 1.88.0.0/14 1.92.0.0/20 1.93.0.0/16 1.94.0.0/15 1.119.0.0/17 1.11…...

从零开始的嵌入式Linux生活(一) 背景介绍

文章目录前言本系列文章的主要思想:本系列文章包括:一、什么是嵌入式开发二.嵌入式开发 - 由便宜到贵三.嵌入式开发的基本原理一个美好的假设:再来一个美好的假设美好的假设被打破了 - RTOS系统美好的假设又被打破了 - 嵌入式Linux系统老板飘…...

后缀为whl的文件是什么?如何安装whl文件?学习一下(22)

小朋友们好,大朋友们好! 我是猫妹,一名爱上Python编程的小学生。 欢迎和猫妹一起,趣味学Python。 今日主题 了解并使用Pyhton的库安装包文件whl。 什么是whl文件 whl格式本质上是一个压缩包,里面包含了py文件&am…...

整合Juit

整合Juit 1.SpringBoot整合Juit SpringBootTest class Springboot04JuitApplicationTests {AutowiredBookDao bookDao;Testvoid contextLoads() {System.out.println("test................");bookDao.save();} ​ }  名称:SpringBootTest  类型&…...

C#,码海拾贝(11)——拉格朗日(Lagrange)三点式曲面插值算法,《C#数值计算算法编程》源代码升级改进版

本文开始是曲面插值(Surface Interpolation,也称作:二维插值,二元插值)。 数值计算三点式 数值计算三点式是一种常见的数值计算方法,它是通过对已知函数在某个点及其左右两个点处的函数值进行数值插值&…...

CentOS7系统安装MySQL 5.7

目录一、官网下载mysql5.7二、检查mysql依赖环境三、安装MySQL 5.7.281.将安装程序拷贝到/opt目录下2.安装四个安装包3.查看mysql版本4.服务的初始化5.启动mysql,并查看状态(加不加.service后缀都可以)6.查看mysql服务是否自启动(默认自启动)…...

基于粒子群算法优化BP神经网络的高炉si预测,PSO-BP

目录 摘要 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数, BP神经网络的传递函数 粒子群算法的原理及步骤 基于粒子群算法改进优化BP神经网络的用电量预测 代码 效果图 结果分析 展望 参考 摘要 一般用启发式算法改进B…...

STM32输出PWM波控制电机转速,红外循迹避障智能车+L298N的详细使用手册、接线方法及工作原理,有代码

智能循迹红外避障小车 本设计的完整的系统主要包括STM32单片机最小系统、L298n电机驱动,超声波 ,舵机 ,红外模块等。寻迹小车相信大家都已经耳熟能祥了。 我们在这里主要讲一下L298N驱动电机和单片机输出PWM控制电机转速。 本设计软件系统采…...

3、AI的道德性测试

AI的道德性 AI系统的道德性如何保障是一个重要而复杂的问题,涉及到人工智能的发展、应用、监管、伦理、法律等多个方面。保障AI系统的道德性是一个很重要的问题,因为AI系统不仅会影响人类的生活和工作,也会涉及人类的价值观和伦理道德原则。针对这部分,也需要测试AI系统是…...

银行数字化转型导师坚鹏:银行业务需求分析师技能快速提升之道

银行业务需求分析师技能快速提升之道 ——以推动银行战略目标实现为核心,实现知行果合一课程背景: 很多银行都在开展业务需求分析工作,目前存在以下问题急需解决:不知道银行业务需求分析师掌握哪些关键知识?不清楚…...

C++IO流

文章目录一、CIO流体系二、C标准IO流三、C文件IO流1.ifstream2.ofstream一、CIO流体系 C流是指信息从外部输入设备向计算机内部输入,从内存向外部输出设备输出的过程,这种输入输出的过程非常形象地被称为流的概念。IO流指的就是输入输出流。 我们平时对…...

交友项目【后端环境搭建】

目录 1:环境搭建 1.1:MYSQL数据库 1.1.1:导入相应的sql 1.2:Linux中的docker-compose方法集中部署 1.2.1:介绍 1.3:IDEA设置 1.3.1:基本要求 1.3.2:设置项目编码格式 1.3.3&…...

大事务问题解决方案

文章目录 大事务引发的问题解决办法少用@Transactional注解将查询(select)方法放到事务外事务中避免远程调用事务中避免一次性处理太多数据非事务执行异步处理总结大事务引发的问题 1、死锁 2、回滚时间长 3、并发情况下数据库连接池被占满 4、锁等待 5、接口超时 6、数据库主…...

python开启局域网传输

python开启局域网传输 1.找自己的IP 在命令提示窗口输入&#xff1a;ipconfig <----找自己的IP地址 2.创建要传输文件的文件夹&#xff08;只允许在该文件夹下访问传输&#xff09; a.复制文件夹路径 b.在命令提示窗口cd打开新创建的文件夹 cd “C:\Users\86151\Desktop…...

病毒丨熊猫烧香病毒分析

作者丨黑蛋 一、病毒简介 病毒名称&#xff1a; 熊猫烧香 文件名称&#xff1a; 40fee2a4be91d9d46cc133328ed41a3bdf9099be5084efbc95c8d0535ecee496 文件格式&#xff1a; EXEx86 文件类型(Magic)&#xff1a; MS-DOS executable 文件大小&#xff1a; 29.30KB SHA256&…...

SparkSQL学习——SparkSQL配置与文件的读取与保存

目录 一、添加依赖 二、配置log4j 三、spark提交jar包 四、读取文件 (一)加载数据 (二)保存数据 1.Parquet 2.json 3.CSV 4.MySql 5.hive on spark 6.IDEA的Spark中操作Hive 一、添加依赖 <properties><project.build.sourceEncoding>UTF-8</proje…...

随想录Day45--动态规划:70. 爬楼梯 (进阶), 322. 零钱兑换, 279.完全平方数

70爬楼梯这道题之前已经做过&#xff0c;是动态规划思想的入门&#xff0c;想要爬上第n层阶梯&#xff0c;看爬上n-1层的方法和n-2层的方法共有多少种&#xff0c;两个相加就是爬上n层阶梯的方法。这里扩展到每次可以爬k层&#xff0c;这样就是一个动态规划问题。因为每次可以爬…...

原理+案例,关于主从延迟,一篇文章给你讲明白!

前言 在生产环境中&#xff0c;为了满足安全性&#xff0c;高可用性以及高并发等方面的需求&#xff0c;基本上采用的MySQL数据库架构都是MHA、MGR等&#xff0c;最低也得是一主一从的架构&#xff0c;搭配自动切换脚本&#xff0c;实现故障自动切换。 上述架构都是通过集群主…...

终极指南:如何用Scream实现Windows音频网络共享

终极指南&#xff1a;如何用Scream实现Windows音频网络共享 【免费下载链接】scream Virtual network sound card for Microsoft Windows 项目地址: https://gitcode.com/gh_mirrors/sc/scream 想要将Windows电脑的音频无线传输到其他设备&#xff1f;厌倦了复杂的音频线…...

量化文明:贾子理论(Kucius Theory)CVC/WVC方程揭示可持续性密码

量化文明&#xff1a;贾子理论&#xff08;Kucius Theory&#xff09;CVC/WVC方程揭示可持续性密码摘要&#xff1a;贾子理论通过文明方程&#xff08;CVC/WVC&#xff09;构建数理模型&#xff0c;量化文明价值与智慧资本。核心公式以意义、能量、时间积分定义CVC&#xff0c;…...

实战react项目:基于快马ai快速构建包含图表与导航的用户数据仪表盘

最近在做一个用户数据仪表盘项目&#xff0c;正好用React配合Ant Design实现了一套完整的界面。这种包含导航、图表和动态数据的页面在后台系统中很常见&#xff0c;记录下我的实现思路和踩坑经验。 项目结构规划 首先用create-react-app初始化项目&#xff0c;然后按功能模块…...

《AI Money Hunter:智能财务侦探,你的理财新助手》

《AI Money Hunter&#xff1a;智能财务侦探&#xff0c;你的理财新助手》 【免费下载链接】aimoneyhunter ai副业赚钱大集合&#xff0c;教你如何利用ai做一些副业项目&#xff0c;赚取更多额外收益。The Ultimate Guide to Making Money with AI Side Hustles: Learn how to …...

FGA智能自动战斗全攻略:解放双手,高效玩转F/GO

FGA智能自动战斗全攻略&#xff1a;解放双手&#xff0c;高效玩转F/GO 【免费下载链接】FGA FGA - Fate/Grand Automata&#xff0c;一个为F/GO游戏设计的自动战斗应用程序&#xff0c;使用图像识别和自动化点击来辅助游戏&#xff0c;适合对游戏辅助开发和自动化脚本感兴趣的程…...

如何通过ExplorerPatcher实现Windows 11界面个性化定制:从经典布局到高效工作流

如何通过ExplorerPatcher实现Windows 11界面个性化定制&#xff1a;从经典布局到高效工作流 【免费下载链接】ExplorerPatcher This project aims to enhance the working environment on Windows 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher Wi…...

AI与数据库融合:从经典论文到前沿实践

1. AI与数据库融合的起源与演进 数据库和人工智能这两个看似独立的领域&#xff0c;其实早在计算机科学发展的初期就已经产生了交集。上世纪70年代&#xff0c;当关系型数据库理论刚刚确立时&#xff0c;研究者们就开始探索如何让数据库系统具备一定的"智能"。当时的…...

开源推荐系统项目数据管理实战:从零构建高质量训练数据集

开源推荐系统项目数据管理实战&#xff1a;从零构建高质量训练数据集 【免费下载链接】fun-rec 推荐系统入门教程&#xff0c;在线阅读地址&#xff1a;https://datawhalechina.github.io/fun-rec/ 项目地址: https://gitcode.com/datawhalechina/fun-rec 你是否曾满怀热…...

Hunyuan-MT 7B一键部署教程:基于Git实现快速环境搭建

Hunyuan-MT 7B一键部署教程&#xff1a;基于Git实现快速环境搭建 想试试那个在国际翻译比赛里拿了30个第一的Hunyuan-MT-7B模型吗&#xff1f;你可能在网上看到过它的介绍&#xff0c;支持几十种语言&#xff0c;翻译效果据说很惊艳。但一看到“本地部署”、“环境配置”这些词…...

Vue2集成海康摄像头RTSP流:基于FFmpeg转码与WebSocket实时传输方案

1. 海康摄像头RTSP流播放的技术挑战 海康威视作为国内主流监控设备厂商&#xff0c;其摄像头输出的RTSP流在Web端直接播放存在天然技术屏障。浏览器原生不支持RTSP协议&#xff0c;传统方案需要依赖浏览器插件或转码服务。我在实际项目中发现&#xff0c;直接使用VLC测试RTSP流…...