IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 第七章:函数--C++编程模块(一) -> 正文阅读

[C++知识库]第七章:函数--C++编程模块(一)

7.1复习函数的基本知识

要使用C++函数必须完成如下工作

1、提供函数定义
2、提供函数原型
3、调用函数

库函数是已经定义和编译好的函数,同时可以使用标准库头文件提供其原型。

自己创建函数必须自行处理这3个方面------定义、提供原型和调用

#include <iostream>
using  namespace std;

void simple();

int main()
{
 cout<< "main will call the simple() function:\n";
 simple();
    cout<<"main is finished with the simple function .\n";
 return 0;


}

void simple ()
{
 cout <<"i am but a simple function.\n";
}

程序的输出为

main will call the simple() function

i am but a simple function

main is finished with the simple function 

执行函数simple时,将暂停执行main中的代码;等函数simple执行完毕后,继续执行main中的代码。

7.1.1定义函数

可以将函数分成两类:

1、没有返回值的函数
2、有返回值的函数

没有返回值的函数被称为void函数

通用格式如下

void functionName(parameterList)
{
        statement(s)
        return:
}

parameterList指定了传递给函数的参数类型和数量。

可选的返回语句return标记了函数的结尾。

无返回值函数实例,将cheers打印n次

void cheers(int n)
{
    for(int i=0; i<n; i++)
        std::cout<<"cheers";
        std::cout<<std::endl;

}

参数列表int n意味着用函数cheers()时,应将一个int值作为参数穿个它。

有返回值的函数将生成一个值,并将它返回给调用函数。

其通用格式如下

typeName functionName(parameterList)
{
        statements
        return value;
}

对于有返回值的函数,必须使用返回语句,以便将值返回给调用函数,

值本身可以是:

1、常量
2、变量
3、或是表达式

只是其结果类型必须为typeName类型或可以转换成为typeName。

对于C++返回值类型有一定的限制:不能是数组

单可以是其他任何类型:

1、整型
2、浮点数
3、指针
4、结构
5、对象

虽然C++不能返回数组,但可以将数组作为结构或对象组成部分来返回。

函数是如何返回值的:

通常,函数通过将返回值复制到指定cpu寄存器或内存单元中来将其返回。随后,调用程序将查看该单元。返回函数和调用函数必须就该内存单元中存储的数据的类型达成一致。函数原型将返回值类型告知调用函数,而函数定义命令被调用函数应返回什么类型的数据。

在原型中提供与定义中相同的信息似乎是多余的,但这样做确有道理。

要让信差从办公室的办公桌取走一些物品,则向信差和办公室中的同事交代自己的亿图,将提高信差顺利完成这项工作的概率。

7.1.2函数原型和函数调用(先调用函数后定义函数)

函数原型,它经常隐藏在include文件中。

请留意下面的函数原型

#include <iostream>
using namespace std;

void cheers(int);
double cube (double x);

int main()
{
    cheers(5);
    cout <<"give me a number: ";    
    double side;
    cin >> side;
    double volume = cube(side);
    cout <<"A"<<side<"-foot cube has a volume of";
    cout << volume << "cubie feet.\n";
    cheers(cube(2));
    return 0;


}

void cheers(int n)
{
    for(int i=0; i<n; i++)
        cout<<"cheers";

}

double cube(double x)
{
    return x*x*x;
}

运行情况如下:

cheers cheers cheers cheers cheers

give me a number :5

A -?foot cube has a volume of 125?cubie feet.

cheers cheers cheers cheers cheers cheers cheers cheers

cheers(5):这是一个函数调用语句

由于cube()有返回值,因此main()中可以将其用在赋值语句中:

double volume = cube(side)

1、为什么需要原型:

原型描述了函数到编译器接口,也就是说他将函数返回值类型(如果有的话)以及参数的类型和数量告诉编译器。例如,请看原型如何影响上述程序清单的调用:

double volume = cube (side);

首先,原型告诉编译器,cube()有一个double参数。

其次,cube()函数完成计算后,将把返回值放在指定的位置---可能是cpu的寄存器,也可能是内存中。

然后调用函数将从这个位置取得返回值。

避免使用函数原型的唯一方法是,在首次使用函数之前定义它,但这并不总是可行的。零位C++编程风格将main()放在最前面,因为它通常提供程序的整体结构。

2.原型的语法

函数原型是一条语句,因为必须以分号结束。获得原型最简单的方法是复制函数定义中的函数头,并添加分号,例如:

double cube (double x);

然后函数原型不要求提供变量名,有类型列表就足够了。对于cheer()的原型,程序中只提供了参数类型:

void cheer(int);

通常,在原型的参数列表中,可以包括变量名,也可以不包括。

原型中的变量名相当于占位符,因此不必与函数定义中的变量名相同。

3.原型的功能

原型可以帮助编译器完成许多工作;

他们可以极大地降低程序出错的几率。

原型确保一下几点:

1、编译器正确处理函数返回值。
2、编译器检查使用的参数书目是否正确
3、编译器检查使用的参数类型是否正确。如果不正确,则转换为正确类型(如果可能的话。)

下面来看一下参数数目不对时将发生的情况。

例如,假设进行了如下调用:

double z = cube ();

如果没有函数原型,编译器将允许它通过。当函数被调用时,他将找到cube()调用存放值的位置,并使用这里的值。

在C++中原型不是可选的,因此可以确保不会发生这类错误。

假设提供一个参数,但是参数类型不对,C++将自动将传递的值转换为原型中指定的类型,条件是两者都是算数类型。例如

cheers(cube(2));

首先程序将int的值2传递给cube(),而后者期望的值是double类型,编译器注意到,cube()原型指定了一个double类型参数,因此将2转换成2.0----一个double值。接下来,cube()返回一个double值(8.0),这个值被用作cheer()的参数。编译器将再一次检查原型,并发现cheer()要求一个int参数,因此将他返回值转换成整数8.通常,原型自动将被传递的参数强制转换成为期望的类型。(但是第8章函数重载可能导致二义性,因此不允许某些自动强制类型转换。)

?在编译阶段进行的原型转化称为静态类型检查。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-19 11:52:27  更:2021-08-19 11:54:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 15:26:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码