C++函数参数的规则
C++函数参数的规则
- 【规则6-1-1】参数的书写要完整,不要贪图省事只写参数的类型而省略参数名字。如果函数没有参数,则用void填充。
例如:
void SetValue(int width, int height); // 良好的风格
void SetValue(int, int); // 不良的风格
float GetValue(void); // 良好的风格
float GetValue(); // 不良的风格
- 【规则6-1-2】参数命名要恰当,顺序要合理。
例如编写字符串拷贝函数StringCopy,它有两个参数。如果把参数名字起为str1和str2,例如
void StringCopy(char *str1, char *str2);
那么我们很难搞清楚究竟是把str1拷贝到str2中,还是刚好倒过来。
可以把参数名字起得更有意义,如叫strSource和strDestination。这样从名字上就可以看出应该把strSource拷贝到strDestination。
还有一个问题,这两个参数那一个该在前那一个该在后?参数的顺序要遵循程序员的习惯。一般地,应将目的参数放在前面,源参数放在后面。
如果将函数声明为:
void StringCopy(char *strSource, char *strDestination);
别人在使用时可能会不假思索地写成如下形式:
char str[20];
StringCopy(str, “Hello World”); // 参数顺序颠倒
- 【规则6-1-3】如果参数是指针,且仅作输入用,则应在类型前加const,以防止该指针在函数体内被意外修改。
例如:
void StringCopy(char *strDestination,const char *strSource);
- 【规则6-1-4】如果输入参数以值传递的方式传递对象,则宜改用“const &”方式来传递,这样可以省去临时对象的构造和析构过程,从而提高效率。
- 【建议6-1-1】避免函数有太多的参数,参数个数尽量控制在5个以内。如果参数太多,在使用时容易将参数类型或顺序搞错。
- 【建议6-1-2】尽量不要使用类型和数目不确定的参数。
C标准库函数printf是采用不确定参数的典型代表,其原型为:
int printf(const chat *format[, argument]…);
这种风格的函数在编译时丧失了严格的类型安全检查。
C++函数参数的规则相关推荐
- C++ 笔记(13)— 函数(函数声明、函数定义、函数调用[传值、指针、引用]、函数参数默认值、函数重载)
每个 C++ 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数. 1. 函数声明 函数声明告诉编译器函数的名称.返回类型和参数.函数声明包括以下几个部分: ret ...
- python基础(三元运算+深浅拷贝+函数参数)
三元运算 三元运算,又称三目运算,主要作用是减少代码量,是对简单的条件语句的缩写. 1 书写格式: 2 result = 值1 if 条件 else 值2 3 即如果条件成立,则将值1赋给result ...
- Python中的函数参数类型
1.参数命名规则经验:绝大多数函数接收一定数量的参数,然后根据实际调用时提供的参数的值的不同,输出不同的结果.前面我们说过,将函数内部的参数名字,定义得和外部变量的名字一样是一种不好的习惯,它容易混淆 ...
- Linux函数名加数字,C++ 编译器的函数名修饰规则
函数名字修饰(Decorated Name)方式 函数的名字修饰(Decorated Name)就是编译器在编译期间创建的一个字符串,用来指明函数的定义或原型.LINK程序或其他工具有时需要指定函数的 ...
- mysql 自定义哈希函数_C++ STL无序容器自定义哈希函数和比较规则(超级详细)...
前面在讲解 unordered_map.unordered_multimap.unordered_set 以及 unordered_multiset 这 4 种无序关联式容器(哈希容器)时,遗留过一个 ...
- 【 C 】函数参数通过传值调用还是传址调用?
C 函数的所有参数均以 "传值调用" 方式进行传递,这意味着函数将获得参数值的一份拷贝.这样函数就可以放心修改这个拷贝值,而不必担心会修改调用程序实际传递给它的参数. 既然调用函数 ...
- python中args和kwargs_Python 函数参数*args和**kwargs
尽管*args和**kwargs参数不受重视,但这它们是Python中非常有用的特性.了解其中的潜能会让你成为更高效的开发者. *args和**kwargs参数到底有什么用呢?它们能让函数接受可选参数 ...
- python函数参数理解
1.位置参数 函数调用时,参数赋值按照位置顺序依次赋值. e.g. 1 def function(x): 2 3 return x * x 4 5 print function(2) 输出结果: 4 ...
- Day04:函数参数、对象、嵌套、闭包函数和装饰器
上节课复习: 1.什么是函数 函数就是具备某一功能的工具 2.为何用函数 1.程序的组织结构和可读性 2.减少代码冗余 ...
最新文章
- AI 框架部署方案之模型部署概述
- OpenCart之在线客服(Google Talk)模块教程
- [导入]在ASP.NET+ORACLE添加数据记录并让ID自动增量
- SPOJ Ada and Spring Cleaning(hash)
- jQuery最佳实践
- JZOJ 3401 JZOJ 5673. 【GDOI2018Day1模拟4.20】爬山法
- 为Web程序员解毒:9个IE常见Bug的解决方案
- 宣汉计算机公办学校,宣汉职业中专学校是公办的吗
- ssh远程执行oracle命令,ssh远程执行命令技巧
- 514 - Rails
- frontend-maven-plugin插件问题解决
- coreldraw中制作蚊香实例_关于CorelDRAW印前排版规范你知道么?
- LINUX安装之后,图标显示问题
- (转)智能投顾的中国特色:强需求,大规模,低门槛与巨大提升空间
- matlab画图函数双精度,Matlab中图像函数大全2_matlab函数大全
- Overleaf 硕士毕业论文参考文献格式设置
- [渝粤教育] 西南科技大学 翻译 在线考试复习资料
- ioc performanceTest
- Java岗大厂面试百日冲刺【Day46】— Linux2 (日积月累,每日三题)
- 【成为架构师课程系列】作为一名大数据架构师该掌握的技能清单:
热门文章
- 微信生成专属海报(专属二维码)
- 从Client应用场景介绍IdentityServer4(二)
- Buffer.concat()
- hybrid App cordova打包webapp PhoneGap
- 手机尺寸相关的概念 +尺寸单位+关于颜色
- 统计学习方法 --- 感知机模型原理及c++实现
- Centos7升级Python2到Python3
- java生成二维码打印到浏览器
- Confluence 6 数据收集隐私策略
- linux下使用source /etc/profile保存配置后,新的环境变量只能在一个终端里面有效...