码迷,mamicode.com
首页 > 其他好文 > 详细

函数一(标准库函数,自定义函数)

时间:2020-10-31 01:54:53      阅读:30      评论:0      收藏:0      [点我收藏+]

标签:标准   math   预编译   row   自己   使用   传递   ble   while   

1.标准库函数

下面以sqrt函数为例,解说下标准函数:

sqrt函数用于计算一个数的平方根。sqrt函数从一个数(如9.0)开始,计算出它的平方根(如3.0)。函数开始时使用的值称为该函数的实参,它计算后得到的值称为返回值。有的函数可能有多个实参,但函数的返回值不能超过1个。如果将函数视为小程序,那么实参就相当于输入,返回值则相当于输出在程序中使用函数时,例如:

the_root=sqrt(9.0);

 

 这里,表达式sqr(9.0)称为一个函数调用。函数调用中的实参可以是一个常量,也可以是一个变量,甚至可以是一个复杂的表达式。函数调用本身是一个表达式,可像他任何表达式那样使用。可以在任何位置使用函数调用,只要它能返回指定类型的值。
如果要使用sqrt函数时,要使用头文件cmath,即#include<cmath>。其中include预编译指令。尖括号一内的名称是头文件的名称。一个库的头文件为编译器提供了关于这个库的特定信息, include预编译指令将这些信息传递给编译器。这样一来,链接器( Linker)就能在库中找到函数的目标码,以便将库正确地链接到用户的程序。例如, iostream库包含了cin和cout的定义,而且这个库的头文件称为 iostream;math库包含了sqrt以及其他大量数学函数的定义,而且这个库的头文件称为 cmath。如果在程序中使用了某个库的标准函数,就必须包含一条预编译指令,指定那个库的头文件。
下表总结了几个标准库函数:

名称

说明

实参类型

返回值类型

示例

库的头文件

sqrt

平方根

double

double

sqrt(4.0)

2.0

cmath

pow

乘方

double

double

pow(2.0,3.0)

8.0

cmath

abs

取int值的绝对值

int

Int

abs(-7)

7

cstdlib

abs(7)

7

labs

取long值的绝对值

long

long

labs(-70000)

70000

cstdlib

labs(70000)

70000

fabs

取double值的绝对值

double

double

fabs(-7.5)

7.5

cmath

fabs(7.5)

7.5

cell

向上取整

double

double

cell(3.2)

4.0

cmath

cell(3.9)

4.0

floor

向下取整

double

double

floor(3.2)

3.0

cmath

floor(3.9)

3.0

【例如】

double result, x=3.0, y=2.0;
pow(x, y);
cout << result;

 运行结果result=9.0
pow函数始终返回 double类型的值,而不是int类型。还要注意,函数pow需要两个实参。一个函数可以有任意多个实参。每个实参位置都具有指定的类型。函数调用中使用的实参应该具有这一指定类型。

 2.自定义函数:

 我们自己编写了一个函数,即这个函数是存在的,这叫作函数的声明(Declaration)。其次,我们要告诉电脑这个函数是怎么运作的,这叫作函数的定义(Definition)。关于这点我是这样认为的函数的声明就相当于告诉你后面有个帅哥,函数的定义就相当于告诉你那个帅哥到底长什么样子。一般来说,我们一般会先告诉你有个帅哥,其次再告诉你帅哥到底怎么怎么帅,所以说函数的声明放在函数的定义是前面

1函数的声明

 作用: 告诉编译器函数名称及如何调用函数。函数的实际主体可以单独定义。

 函数的声明可以多次,但是函数的定义只能有一次

 函数原型的结构就是:

返回值类型    函数名(参数表);

函数声明同变量的声明一样,是一句语句。所以在语句结束要加上分号。

 【示例】:

//声明可以多次,定义只能一次//声明int max(int a, int b);int max(int a, int b);//定义int max(int a, int b)

{

return a > b ? a : b;
}

int main() {

 int a = 100;

int b = 200;

cout << max(a, b) << endl;

system("pause");

return 0;

}

 2)函数调用

 调用函数将导致函数的执行。函数 main 在程序启动时自动调用,但所有其他函数必须由函数调用语句执行。当一个函数被调用时,程序分支到该函数并执行其主体中的语句。

 语法: 函数名(参数)

 【示例】:

//函数定义int add(int num1, int num2) //定义中的num1,num2称为形式参数,简称形参

{
int sum = num1 + num2;

return sum;
}

int main() {

int a = 10;

int b = 10;//调用add函数

int sum = add(a, b);//调用时的a,b称为实际参数,简称实参 cout << "sum = " << sum << endl; a = 100; b = 100;
sum
= add(a, b); cout << "sum = " << sum << endl; system("pause"); return 0; }

 3) 形参实参

在声明一个函数的时候,参数是没有实际值的,只是起到一个占位的作用,所以称为形式参数,简称“形参”;
在主调函数中调用一个函数时,函数名后面括号中的参数(可以是一个表达式)称为实际参数(actual parameter,简称实参)。
实参是主调函数赋给被调函数的特定值。
实参可以是常量、变量或复杂的表达式,不管是哪种情况,在调用时实参必须是一个确定的值。

 说明:

1. 实参变量对形参变量的数据传递是"值传递",即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中实参、形参分占不同的单元。实参与形参一一对应,类型应相同或赋值兼容。

 2. 不同的函数中可以使用相同的变量名和形参名,他们是不同的变量。

 4函数的定义

 语法:

 返回值类型 函数名 (参数列表)
没有分号结尾的函数原型

{

函数体语句

 return表达式

 }

返回值类型 :一个函数可以返回一个值。

 在函数定义中函数名:给函数起个名称。

 参数列表:使用该函数时,传入的数据。

 函数体语句:花括号内的代码,函数内需要执行的语句。

 return表达式: 和返回值类型挂钩,函数执行完后,返回相应的数据

 【实例】

include<iostream>using namespace std;int max(int x, int y);//函数的声明 ,x,y是形参int main()

{ int x, y, z;

    while (1)

    { cout << "请输入两个不同数值,以空格分开\n";

        cin >> x >> y;

        z = max(x, y); //函数的调用 ,此时x.y是实参

        cout << "最大值是:" << z << endl;
} }
int max(int x, int y)//函数的定义 { int z; if (x > y) z = x;
else z = y;
return z;
}

 

技术图片

 

 

 

 

 

 

 

 

 

 

 

函数一(标准库函数,自定义函数)

标签:标准   math   预编译   row   自己   使用   传递   ble   while   

原文地址:https://www.cnblogs.com/CX66/p/13765460.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!