函数与重载的学习

本文介绍C语言中常用的数学函数,如平方根、乘方等,并展示如何使用随机数函数生成随机数。此外,还讲解了函数的声明方法、参数传递方式以及函数重载的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一些常见的预定义函数

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宏。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值