c++函数

1、函数原型:

       如果使用函数时,函数还没有被声明过,那么,可以在文件头写一个函数原型,例如:

                                                       int square(int);

括号中不必写参数名字,只需参数类型,并且后面一定要加上";"

2、常用数学库函数:

常用数学库函数

函数

说明

示例

ceil

取整数部分,使其不小于x

ceil( 9.2 ) = 10.0

cos

余弦

cos( 0 ) = 1

exp

ex次方

exp( 1 ) = 2.71828

abs

绝对值

abs( 1.2 ) = 1.2, abs( - 2.3 ) = 2.3

floor

取整数部分,使其不大于x

floor( 9.2 ) = 9.0

fmod

x/y的浮点数余数

fmod( 13.657, 2.333 ) = 1.992

ln

e为底,求x的自然对数

ln( 2.71828) = 1

lg10

10为底,求x的自然对数

lg10 ( 10.0 ) = 1.0

pow

xy次方

pow( 2, 7 ) = 128

sin

正弦

sin ( 0 ) = 0

sqrt

平方根

sqrt( 4 ) = 2

tan

正切

tan ( 0.0 ) = 0

 

 

 

 

 

 

 

 

 

3、随机数

      函数rand() 用来生成0RAND_MAX的一个无符号整数,如果想得到范围是 x - y (包括xy)的数,可以用 x + rand()%y

     但是注意:仅仅用rand的话,一旦程序编译通过,那么每次输出的随机数是一样的,想要程序每次都输出不同的随机值,我们可以人工的种植一个种子。

int main()
{
int i;
for(i=1;i<=20;i++)
  cout<<(1 + rand()%6);
if(i % 5 = 0)
  cout << endl;
}
/*
这个例子中虽然在for循环里面的数是随即产生的,但是当我们重复运行程序时,它所产生的结果是重复的*/

int main()
{
srand(time(0));
//我们人工的种植一个种子,这个种子是计算机自己的时钟值
int i;
for(i=1;i<=20;i++)
  cout<<(1 + rand()%6);
if(i % 5 = 0)
  cout << endl;
}
/*这个例子中,当我们重复运行程序时,结果会不同*/

 

 4、内联函数

      在函数定义中,函数返回类型之前的限定符 inline “建议编译器在适当的程序部分生成函数的副本,以避免频繁的函数调用。这样做的结果是程序中插入多个函数代码的副本(因而使程序增大),而不是一个函数的副本(每次调用函数时,控制都会传递到函数中)。

inline double cube(const double s) ...return s*s*s;}
int mian()
{
int i, j;
for( i = 1; i < 5; i++)
return j *= cube(i);
}

 

注意:虽然内联函数可以提高性能,但是对内联函数的任何更改都需要重新编译该函数的所有客户。这会大大影响欧些程序的开发和维护。

5、引用和引用参数

      许多编程语言中调用函数都有两种形式:传值调用引用调用

int s(int);//传值调用
int s2(int & );//引用调用
int mian()
{
int x=3;
s(x);
cout<<x<<endl;
s2(x);
cout<<x<<endl;
return 1;
}
int s(int x)
{
x =2;
}
int s2(int &x)
{
x=2;
}
/*
3
2
*/

传值调用时,优点是会产生改参数的副本并将该副本传递给被调用函数,因此对副本的更改不会影响原始变量,从而避免数据被更改。缺点是如果传递的是大型数据项目,那么复制该数据会花费较长的时间。

引用调用时,优点是可以避免复制大量数据。缺点是安全性差,因为被调用函数可以直接修改调用者的数据。

但是我们可以在参数类型前面加上"const"来是参数变为常量参数,从而提高安全性。

int s2(const int&);

6、别名

       利用引用可以声明一个变量的别名,例如:

int x=1;
int &ref=x;//
正确
int &ref2;//错误,必须初始化引用

引用变量必须在声明中得以初始化,一旦引用被声明为另一个变量的别名,那他将与那个变量拥有相等的地位,仅仅是名称的不同。

7、函数返回引用

      函数返回引用是一件非常危险的事情,因为函数在终止时会删除自动化变量,此时返回的引用时悬挂应用。如果非要返回引用,那么请把变量声明为static

8、默认实参

      函数调用通常传递参数的特定值,程序员可以指定此类参数是默认实参,可以为此类参数提供默认值。但默认实参必须是参数列表中最右边的那个/那几个参数,如果不是,那么它右边的所有参数也必须省略。默认实参应该在函数名首次出现的时候指定——通常是在函数原型中。

int f(int , int length=0,int width=0);
int mian()
{
f( 1 );
f( 1, 1 );
f( 1, 1, 1 );
return 1;
}
f(
int x, int length = 0, int width = 0 )
{
cout<<x<<' '<<length<<' '<<width<<endl;
}
/*
1 0 0
1 1 0
1 1 1
*/

 ——总结自c++编程金典

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值