zoukankan      html  css  js  c++  java
  • C++函数一(标准库函数,自定义函数)

    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函数的声明

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

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

     函数原型的结构就是:

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

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

     2)函数调用

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

     语法: 函数名(参数)

     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 << "请输入两个不同数值,以空格分开 "; 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;
    }

  • 相关阅读:
    VIJOS-P1340 拯救ice-cream(广搜+优先级队列)
    uva 11754 Code Feat
    uva11426 GCD Extreme(II)
    uvalive 4119 Always an Interger
    POJ 1442 Black Box 优先队列
    2014上海网络赛 HDU 5053 the Sum of Cube
    uvalive 4795 Paperweight
    uvalive 4589 Asteroids
    uvalive 4973 Ardenia
    DP——数字游戏
  • 原文地址:https://www.cnblogs.com/CX66/p/13765460.html
Copyright © 2011-2022 走看看