1. 要使用C++函数, 必须完成如下工作:
    (1) 提供函数原型; 即声明函数 void simple();
    (2) 提供函数定义; 即定义函数simple()的内容;
    (3) 调用函数;

2. C++对于返回值的类型有一定的限制: 不能是数组, 但可以是其他任何类型(整数,浮点数,指针,结构体和对象). 注意: 虽然C++函数不能直接返回数组, 但可以将数组作为结构体对象组成部分来返回. 例如, 结构体point, 含有一个数组a[3], 函数可以返回结构体point.

3. 函数返回值过程. 例如下面过程:
   double cube(double a);//函数原型
   int main()
   {
       ... double q=cube(1.2);...
    }
   double cube(double)
   {
       return a*a*a;
    }
    (1) cube()计算返回值, 并将返回值复制到指定的CPU寄存器或内存单元中, 返回值地址为p; 函数头告诉cube()返回值类型为double;
    (2) main()在p处找到返回值并赋值给q, cube()原型告诉main()它可以获得的数据类型.
    (1)和(2)中必须救返回值类型达成一致,否则会被强制转换.

4. 为什么需要函数原型?
    函数原型描述了函数到编译器的接口, 它将函数返回值的类型(如果有的话)以及参数的类型和数量告诉编译器. 例如
        double q=cube(side)
    原型告诉编译器, cube()有一个double参数. 如果程序没有提供这样的参数, 原型将让编译器能够捕获这种错误. cube()函数完成计算后, 将把返回值放置在指定的位置-可能是CPU寄存器, 也可能是内存中, 然后调用函数(这里是main())将从这个位置取得返回值. 由于原型指出了cube()的类型为double, 因此编译器知道应检索多少个自己以及如何解释它们, 如果没有这些信息, 编译器将只能进行猜测, 而编译器是不会这样做的.

5. 函数的原型是一条语句,以分号结束,函数原型不需要提供变量名,有类型列表就可以了。当然也可以包含变量名,但是在函数原型中的变量名只相当于占位符,不必与函数定义中的变量名相同。一个典型的函数原型为
     double cube(int x);或者double cube(int);

6. 原型的功能
   (1)编译器正确处理函数返回值;
   (2)编译器检查使用的参数数目是否正确;
   (3)编译器检查使用的参数类型是否正确,如果不正确,则转换成正确的类型。

1.9 函数-C++编程模块相关推荐

  1. C++学习之路(六),C++primer plus 第七章 函数--C++的编程模块

    第 7 章 函数---C++的编程模块 本章内容包括: 函数基本知识. 函数原型. 按值传递函数参数. 设计处理数组的函数. 使用 const 指针参数. 设计处理文本字符串的函数. 设计处理结构的函 ...

  2. python语言的计算生态规模有多大_【单选题】Python 语言的一个重要特点是它有较多的计算生态,简单理解为第三方提供的可用编程模块 / 函数库 / 组件,这个规模有多大?...

    [单选题]Python 语言的一个重要特点是它有较多的计算生态,简单理解为第三方提供的可用编程模块 / 函数库 / 组件,这个规模有多大? 更多相关问题 [问答题,简答题] 顾客关系管理系统如何给企业 ...

  3. 《Python编程从入门到实践》记录之将Python函数存储在模块中(import、import*)

    目录 1.导入整个模块 2.导入特定的函数 3.使用as给函数指定别名 4.导入模块中的所有函数 5.总结 我们可以在编写程序时将函数存储在被称为模块的独立文件中,再将模块导入到主程序中(必须的步骤) ...

  4. python导入模块有同名_Python:导入与函数同名的模块

    背景:第一次在SE上提问.我在 Python方面还很陌生,而且在编程方面也不是很有经验.我已经四处寻找,但我没有找到这个问题的答案,我非常感谢你的帮助. 我的问题是:如何导入与函数同名的模块? 具体来 ...

  5. c语言和高数的函数,数学函数与编程函数 数学的函数与编程的函数一样吗?

    1, 数学的函数与编程的函数一样吗? 是相通但不同领域的概念.数学中的函数是根据给定的输入计算或转换得到结果.而编程中的函数则是一个处理过程,它可以执行数学中的函数一类的纯粹计算过程也可以做更多更复杂 ...

  6. 【JAVA黑马程序员笔记】四 P314到P384(特殊流、多线程编程、网络编程模块、lambda表达式、接口组成更新、方法引用、函数式接口)

    P314-315 字节/符打印流 PrintStream ps = new PrintStream("test.txt");//使用字节输出流的方法ps.write(97);// ...

  7. python avg函数在哪个模块_python数据处理工具–Pandas模块

    健壮的数据处理模块Pandas,能够处理数据的预处理作业,如数据类型的转化.缺失值的处理.描绘性核算分析和数据的汇总等 一.序列与数据框的结构 Pandas模块的中心操作政策为序列和数据框.序列指数据 ...

  8. Python-函数式编程模块itertools、functools、operator

    目录 上篇文章思考题 itertools 无穷迭代器 count 计数 cycle 循环 repeat 重复 排列组合迭代器 product 笛卡儿积 permutations 排列 combinat ...

  9. STM32单片机SIM800C创客GSM短信GPRS可编程模块SDK二次开发DIY

    STM32单片机SIM800CGSM电话短信GPRS网络可编程模块SDK二次开发 板载STM32F103RCT6单片机,板载LDO,板载SIM800C,有SDK,有基础技术支持,可深度定制. 通过我们 ...

最新文章

  1. 初级JavaScript程序员的绝佳进阶书
  2. Scala协变与Java泛型
  3. 深度linux创建微信图标,Deepin Linux 下基于deepin-wine的微信图标不见的问题解决
  4. 前端每日实战:60# 视频演示如何用纯 CSS 创作一块乐高积木
  5. java ee_使用Java EE的ManagedExecutorService异步执行事务
  6. 田志刚:致《你的知识需要管理》读者
  7. ai 中 统计_AI统计(第2部分)
  8. python里面的函数
  9. HTML5 CSS3编程入门经典 ((美)Rob Larsen) pdf扫描版
  10. Ubuntu enca命令可以用来查看文件的编码格式
  11. 用c写的酒店客房登记管理系统
  12. 协议实例说明--租房
  13. 汽车维修企业管理【11】
  14. matlab心碎的心,伤感网名女生心碎四字
  15. keras.models导入Sequential错误
  16. 指纹识别综述(3): 特征提取
  17. 平替电容笔用什么品牌,最推荐的品牌
  18. python学习dya4
  19. 盛邀相聚贵阳,共赴“计算”之约,CNCC2022新闻发布会举行
  20. Oracle误删除数据的恢复方法(转)

热门文章

  1. Mac 下Eclipse无法连接手机
  2. [HAOI2007] 理想的正方形
  3. ubuntu14.04上java jdk mvn安装
  4. ASP.Net请求小周期
  5. Erlang的边界检查(3)
  6. 一个好用的开源在线时序图/波形图(Timing Diagram)绘制网站
  7. msm8953+android8.1启动异常进入recovery模式_需要格式化data分区恢复启动
  8. android 如何添加第3方lib库到kernel中
  9. 矩阵的LU分解 c++
  10. 阿里云centos7通过yum安装 Mysql 8.0.11