函数与重载的学习
来源:互联网 发布:互联网金融产品知乎 编辑:程序博客网 时间:2024/05/21 03:27
一些常见的预定义函数
cmath(C语言中的math.h)
- sqrt() 平方根
- pow() 乘方
- abs() int类型取绝对值
- labs() long类型取绝对值
- fabs() double类型取绝对值
- ceil() 向上取整
- floor() 向下取整
四舍五入程序举例
int round(double number){ return static_cast<int>(floor(number+0.5));}
cstdlib(c语言中stdlib.h)
- exit() 结束程序
- rand() 随机数(可用srand()函数设定rand函数的seed)
随机数生成举例
int getRound(){ srand(static_cast<int>(time(NULL))); return rand()%10;}
函数的两种声明方法
第一种,是常见的:
int add(int x,int y);
第二中:(仅限于声明函数时,定义是必须给出形参)
int add(int,int);
参数的值传递和引用传递
值传递
仅仅传递了实参的值。实际上是一个局部变量,调用函数时,首先计算出,实参的值然后该值成为传值惨数(实际上就是一个局部变量)的初始值。不能通过调用函数改变实参的值。
int add(int x,int y);
引用传递
引用本身就是变量的别名。函数调用时使用引用传递,是用实参变量(不是值)来代替形参。实参变量直接被带入函数,这样就可以通过改变参数变量改变实参的值。
定义函数式,在形参变量名前加“&”。
int add(int &x,int &y);
函数的重载
C++允许两个函数具有相同的函数名,这就叫做函数的重载。(但是这些函数的定义必须具有不同的参数数目,或者不同的参数类型)
关于根据const和非const特性进行重载的情况,一些编译器支持,但是C++标准是不予许这种做法的。
举例:
int add(int x,int y);//两个int值相加是调用这个函数{return x+y;}int add(int x,int y,int z);//三个int值相加是调用这个函数{return x+y+z;}
有一点要注意,尽量不要让两个毫无关系的函数使用同一个函数名,这样容易造成混淆。
函数的测试与调试
assert宏
assertion(断言)是一个或者为true或者为false的语句。assertion同来检验程序的正确性。
原型定义:
#include <assert.h> void assert( int expression );
assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,
然后通过调用 abort 来终止程序运行。
举例:
#include <stdio.h> #include <assert.h> #include <stdlib.h> int main( void ) { FILE *fp; fp = fopen( "test.txt", "w" );//以可写的方式打开一个文件,如果不存在就创建一个同名文件 assert( fp ); //所以这里不会出错 fclose( fp ); fp = fopen( "noexitfile.txt", "r" );//以只读的方式打开一个文件,如果不存在就打开文件失败 assert( fp ); //所以这里出错 fclose( fp ); //程序永远都执行不到这里来 return 0; }
可以使用
#define NDEGUG
来禁用assert宏。
0 0
- 函数与重载的学习
- c++学习笔记之函数重载与const的关系
- C++学习 函数的重载
- 函数的重载与重写
- 函数的重载与重写
- 【JAVASE_学习笔记】函数与重载
- 函数重载与虚函数的区别
- 关于函数重载与函数的重定意
- 2.3函数与函数的重载
- 虚函数与重载函数的关系
- 函数的重载与构造函数
- 函数重载与函数模板的区别
- 重载函数与指向函数的指针
- JAVA的构造函数与函数重载
- 函数重载与虚函数的区别
- 函数重载与函数重写的区别
- 第七、Java的函数与函数重载
- 函数的重载与函数模板
- 2016年第一季度总结
- 卷积神经网络
- 栈的压入弹出序列
- linux下关于网络配置(永久性的)
- 工具类:md5快速加密
- 函数与重载的学习
- iOS 应用安装失败原因排查
- 深入学习JVM笔记三 GC算法与种类
- 笔试题--字符处理
- android进程和线程
- 欢迎使用CSDN-markdown编辑器
- 【UOJ 35】 后缀排序|后缀数组 *3
- 从tcp原理角度理解Broken pipe和Connection reset by peer的区别
- 线程、多线程与线程池总结