笔试面试那件小事(函数)
来源:互联网 发布:python idle 显示行号 编辑:程序博客网 时间:2024/05/16 07:38
函数接口的两个要素是参数和返回值。在C语言中,函数的参数和返回值的传递方式有两种:值传递和指针传递。在C++语言中多了引用传递。
1->函数参数
函数在设计时其参数的设计要参考下面一些规则:
a):参数的书写要完整,不要只写了参数的类型,而省略了参数的名字,如果函数没有参数就用void填充
b):参数的命名要恰当,顺序要合理
例如: void StrinCopy(char *str,char *str2);就很难弄明白字符串是从str1拷贝到str2,还是相反过来。
但是写成:void StringCopy(char *strDestination,char *stringSource);就容易明白多了。
c):如果参数是指针,且仅作为输入作用,则应该在类型前面加上const,以防指针在函数体内被意外的修改
d):如果输入的参数以值传递的方式传递对象,则宜该用”const t &“的方式传递可以省去临时对象构造和析构过程的开销,从而提高效率
e):避免函数有太多的参数,参数的个数应当尽量控制在5个以内,尽量不要使用类型和数目不确定的参数
2->返回值
a):不要省略返回值的类型。如果函数没有返回值,那么应当声明为void类型
b):函数名字与返回值类型杂语义上不可冲突
c):不要把正常值好错误标志混在一起返回
d):有时候函数原本不需要返回值,但是为了增加灵活性,例如支持链式表达,可以附加返回值。
例如字符串拷贝函数strcpy的原型:char *strcpy(char *strDeset,const char *srSrc);
e):如果返回值是一个对象,有时候返回值可以用”引用传递“代替值传递
3->函数的内部实现
因为函数的功能不同,其内部实现一定也是不同的,也无法制定一个统一的标准。我们所要说的内部实现指的是函数体”入口处“和”出口处“的规范。
a):在函数体的”入口处“,要对参数的有效性进行检查,例如assert函数
b):在函数的”出口处“,对return语句的正确性和效率进行检查
注意几点:return语句不可以返回指向”栈内存“的指针或者引用;要弄清楚返回的究竟是”值“、”指针“还是”引用“;返回的是一个对象,要考虑返回的效率
4->其他关于函数的建议
a):函数的功能要单一
b):尽量避免函数带有”记忆“功能,例如static变量
c):既要检查输入参数的有效性,也要检查通过其他方式进入函数内的变量的有效性
d):用于出错处理的返回值一定要清楚。
5->断言的使用
断言仅在debug版本中起作用的宏,它用于检查不应该发生的情况。在运行的过程中,如果assert的参数为假,那么就会停止程序的运行
断言使用时候要注意:
使用断言捕捉不应该发生的非法情况,而不是错误的情况
在函数的入口处,使用断言来检查参数的有效性
- 笔试面试那件小事(函数)
- 笔试面试那件小事(C++函数高级特征)
- 笔试面试那件小事(操作系统知识)
- 笔试面试那件小事(数据库知识)
- 笔试面试那件小事(数据库-范式)
- 笔试面试那件小事(数据库SQL查询)
- 笔试面试那件小事(数据库SQL查询续)
- 笔试面试那件小事(数据库概念知识)
- 笔试面试那件小事(内存管理)
- 笔试面试那件小事(类的构造、析构、赋值函数)
- 笔试面试那件小事(常见的C++基础题)
- java面试那件小事
- 感动那件小事!
- 测试那件小事
- 面试那点小事(一)
- 初恋那件小事 观后感
- 数组的那件小事
- 关于std::cin的那件“小事”
- JS前台验证
- 把十三位的秒数转换为 年/月/日 格式,获取URL中的参数值
- JAVA打印倒金字塔的方法
- 数据预处理
- 给727万本科毕业生的10个人生建议
- 笔试面试那件小事(函数)
- 动态链接库编程
- SimpleDateFormat 日期格式化,以及SimpleDateFormat.parse
- java和js将小数转换成百分数
- 拒绝连接
- 增加其它表字段解决方案
- JVM配置参数列表
- 用户权限管理设计
- iPhone之Quartz 2D系列--Quartz 2D概览(1)Overiew of Quartz 2D