C++函数参数的规则

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

例如:

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

void SetValue(int, int);                // 不良的风格

float GetValue(void);       // 良好的风格

float GetValue();           // 不良的风格

  1. 【规则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”);   // 参数顺序颠倒

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

例如:

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

  1. 【规则6-1-4如果输入参数以值传递的方式传递对象,则宜改用“const &”方式来传递,这样可以省去临时对象的构造和析构过程,从而提高效率。
  • 【建议6-1-1避免函数有太多的参数,参数个数尽量控制在5个以内。如果参数太多,在使用时容易将参数类型或顺序搞错。
  • 【建议6-1-2尽量不要使用类型和数目不确定的参数。

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

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

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

C++函数参数的规则相关推荐

  1. C++ 笔记(13)— 函数(函数声明、函数定义、函数调用[传值、指针、引用]、函数参数默认值、函数重载)

    每个 C++ 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数. 1. 函数声明 函数声明告诉编译器函数的名称.返回类型和参数.函数声明包括以下几个部分: ret ...

  2. python基础(三元运算+深浅拷贝+函数参数)

    三元运算 三元运算,又称三目运算,主要作用是减少代码量,是对简单的条件语句的缩写. 1 书写格式: 2 result = 值1 if 条件 else 值2 3 即如果条件成立,则将值1赋给result ...

  3. Python中的函数参数类型

    1.参数命名规则经验:绝大多数函数接收一定数量的参数,然后根据实际调用时提供的参数的值的不同,输出不同的结果.前面我们说过,将函数内部的参数名字,定义得和外部变量的名字一样是一种不好的习惯,它容易混淆 ...

  4. Linux函数名加数字,C++ 编译器的函数名修饰规则

    函数名字修饰(Decorated Name)方式 函数的名字修饰(Decorated Name)就是编译器在编译期间创建的一个字符串,用来指明函数的定义或原型.LINK程序或其他工具有时需要指定函数的 ...

  5. mysql 自定义哈希函数_C++ STL无序容器自定义哈希函数和比较规则(超级详细)...

    前面在讲解 unordered_map.unordered_multimap.unordered_set 以及 unordered_multiset 这 4 种无序关联式容器(哈希容器)时,遗留过一个 ...

  6. 【 C 】函数参数通过传值调用还是传址调用?

    C 函数的所有参数均以 "传值调用" 方式进行传递,这意味着函数将获得参数值的一份拷贝.这样函数就可以放心修改这个拷贝值,而不必担心会修改调用程序实际传递给它的参数. 既然调用函数 ...

  7. python中args和kwargs_Python 函数参数*args和**kwargs

    尽管*args和**kwargs参数不受重视,但这它们是Python中非常有用的特性.了解其中的潜能会让你成为更高效的开发者. *args和**kwargs参数到底有什么用呢?它们能让函数接受可选参数 ...

  8. python函数参数理解

    1.位置参数 函数调用时,参数赋值按照位置顺序依次赋值. e.g. 1 def function(x): 2 3 return x * x 4 5 print function(2) 输出结果: 4 ...

  9. Day04:函数参数、对象、嵌套、闭包函数和装饰器

    上节课复习:     1.什么是函数         函数就是具备某一功能的工具     2.为何用函数         1.程序的组织结构和可读性         2.减少代码冗余         ...

最新文章

  1. AI 框架部署方案之模型部署概述
  2. OpenCart之在线客服(Google Talk)模块教程
  3. [导入]在ASP.NET+ORACLE添加数据记录并让ID自动增量
  4. SPOJ Ada and Spring Cleaning(hash)
  5. jQuery最佳实践
  6. JZOJ 3401 JZOJ 5673. 【GDOI2018Day1模拟4.20】爬山法
  7. 为Web程序员解毒:9个IE常见Bug的解决方案
  8. 宣汉计算机公办学校,宣汉职业中专学校是公办的吗
  9. ssh远程执行oracle命令,ssh远程执行命令技巧
  10. 514 - Rails
  11. frontend-maven-plugin插件问题解决
  12. coreldraw中制作蚊香实例_关于CorelDRAW印前排版规范你知道么?
  13. LINUX安装之后,图标显示问题
  14. (转)智能投顾的中国特色:强需求,大规模,低门槛与巨大提升空间
  15. matlab画图函数双精度,Matlab中图像函数大全2_matlab函数大全
  16. Overleaf 硕士毕业论文参考文献格式设置
  17. [渝粤教育] 西南科技大学 翻译 在线考试复习资料
  18. ioc performanceTest
  19. Java岗大厂面试百日冲刺【Day46】— Linux2 (日积月累,每日三题)
  20. 【成为架构师课程系列】作为一名大数据架构师该掌握的技能清单:

热门文章

  1. 微信生成专属海报(专属二维码)
  2. 从Client应用场景介绍IdentityServer4(二)
  3. Buffer.concat()
  4. hybrid App cordova打包webapp PhoneGap
  5. 手机尺寸相关的概念 +尺寸单位+关于颜色
  6. 统计学习方法 --- 感知机模型原理及c++实现
  7. Centos7升级Python2到Python3
  8. java生成二维码打印到浏览器
  9. Confluence 6 数据收集隐私策略
  10. linux下使用source /etc/profile保存配置后,新的环境变量只能在一个终端里面有效...