《好学的C++ 第2版》 第3章 函数--分工与合作

只有main函数是肯定会被执行的,其他函数都是被调用才会执行。

调用函数,一直到函数结束或是遇到return语句,执行顺序才返回给调用者。//无return? return了错误类型?无需返回值却return了值?

调用可递归调用。

推荐:在程序开头声明函数,在程序某个地方定义函数,在其他函数里调用这个函数。//函数被调用前可不声明,例如main函数。main函数能被调用吗?能调用自身吗?

原型理论上可以放在被调用之前的任何地方。

调用之前不必定义,声明就可以,这让函数相互调用成为可能。//it:c/c++这种只认识前面程序的语言,没有声明就不能相互调用了。

函数声明也称用原型,只提供类型信息。函数不返回任何值的话,返回类型填void。//it:无需入参的话,可以是()推荐填void

函数定义,花括号必不可少。

!!函数调用是一种表达式,只要返回不是void,就可以将它用在更大的表达式里。//void func1(void);int func2(void),那func2(func1())是否合法?  if(func1())会怎样?

返回void的函数可以不return?  !!!标准是返回int,没有return某些编译器会自动补上return 0!!!

main

  http://blog.csdn.net/piaojun_pj/article/details/5986516,其中:

  void main(){}是c99标准里未定义的行为,不同编辑器处理不同,只有int main才是确保对的。main()默认是返回int,

会告警。

  int main(void){/*...*/}及以下带参数定义方法是绝对正确和推荐的,//it:其他的定义方法要么是兼容但不推荐,要么

是未定义行为取决于编译器。

  main可接受命令行参数(此处未讲到,搜索可知),可将main定义为:

    int   main(int   argc,   char*   argv[]){/*...*/}

    或者

    int   main(int   argc,   char**   argv){/*...*/}

    其中argv是字符串数组,argc表示数组中字符串的数量。argv[0]是所在可执行文件的名称或空串,argv[1]开始是

    各个命令行参数  //it:argc至少是1

main函数不能被调用!

//it:main是程序对外的入口和出口,可以从命令行获取参数,也可以给操作系统返回int或不返回值  ?可否返回double char*等类型?

全局变量:声明在所有函数的外部,其生命周期从声明开始到文件结束,任何函数都可以改变它的值。经常用于函数之间共享数据。 //it:存储在静态区

后续要介绍的类,为一组密切相关的函数共享数据提供了更妥善方案:同一个类的函数共享该类私有数据,而其他类的函数享用不到。

递归调用:为了避免无限循环,需要提供退出机制!

栈:计算机负责管理的一段专用内存区域,机制是后进先出(LIFO)。跟踪记录所有尚未返回的函数调用的相关信息(包括输入参数和局部变量)

获取随机数:

c++0x里用nullptr,尽量用它而不用NULL

#include <cmath>

#include <cstdlib>

#include <ctime>

srand(time(NULL));//set seed for random numbers,伪随机序列的第一个数

int a = rand() % 6 + 1; //rand生成int范围内的伪随机数,而a是1到6范围内的随机数

小结补漏:

函数会一直运行到结束或执行到return语句

两个或多个函数调用属于递归调用的变体,只要存在能终结递归调用的机制,就是合法的。

时间: 2024-11-09 01:00:56

《好学的C++ 第2版》 第3章 函数--分工与合作的相关文章

《C++ Primer》 第四版 第7章 函数

<C++ Primer> 第四版 第7章 函数 思维导图笔记 超级具体.很具体,图片版,有利于复习查看 http://download.csdn.net/detail/onlyshi/9479711

C Primer Plus (第五版) 第九章 函数 编程练习

第九章 函数 编程练习 设计函数 min(x,y),返回两个double数值中较小的数值,同时用一个简单的驱动程序测试该函数. #include <stdio.h> double min(double x, double y); int main(void) { double a, b; printf("请输入两个数:\n"); scanf("%lf%lf", &a, &b); printf("两个数中较小的数是:%lf\n&q

Java 线程第三版 第四章 Thread Notification 读书笔记

一.等待与通知 public final void wait() throws InterruptedException 等待条件的发生. public final void wait(long timeout) throws InterruptedException 等待条件的发生.如果通知没有在timeout指定的时间内发生,它还是会返回. public final void wait(long timeout, int nanos) throws InterruptedException

C++ Primer Plus 第六版 第16章 string类和标准模板库

1.string实际上是模板具体化basic_string<char> 的一个typedef,有默认参数,所以省略了初始化参数 2.size_type是一个依赖于实现的整形 string将string::npos定义为字符串的最大长度 3.string类的构造函数P656 4.对于c-风格字符串,3种输入方法:cin>>   cin.getline(),cin.get 对于string   ,2种输入方法:cin>>,getline(cin,string对象) 5.st

Java 线程第三版 第六章 高级同步议题 读书笔记

多线程数据同步错误比较难检测,因为通常是与事件的特定发生顺序有关. 一.同步术语 Barrier(屏障) barrier是多个Thread的集合点:所有的Thread都应该到齐在这个barrier之后才能允许它们继续下去. Condition variable(条件变量) 实际上不是变量,而是与某个lock有关联的变量. Event variable(事件变量) 条件变量的另一个名称. Critical section(临界区) 临界区是synchronized方法或者block. Lock(锁

c++ primer plus(第6版)中文版 第九章编程练习答案

首先,说明下环境: linux:fedora14: IDE:eclipse: python:python2.7 python框架:django web服务器:apache web服务器的python模块:mod_wsgi 写在前面: 之前用的windows下面的xampp,写的php后台,现在想转向linux下面的python,跟以前一样,选择apache和eclipse作为自己的开发工具. eclipse的python配置, 参见之前的博客:http://blog.csdn.net/zy416

《zw版&#183;delphi与halcon系列原创教程》zw版_THImagex控件函数列表

<zw版·delphi与halcon系列原创教程>zw版_THImagex控件函数列表 Halcon虽然庞大,光HALCONXLib_TLB.pas文件,源码就要7w多行,但核心控件就是两个: THImagex,图像数据控件,v11版,包括488个函数和子程序 THOperatorSetX,操作主接口控件,v11版,包括1929个子程序 以上两大核心控件,已经删除个别delphi内部属性函数,不影响日常使用. 其他控件,基本上,都是为配合两个控件,提供数据类型支持.辅助功能.已经一些特殊应用(

Java 线程第三版 第三章数据同步 读书笔记

多线程间共享数据问题 一.Synchronized关键字 atomic一词与"原子"无关,它曾经被认为是物质的最小的单元,不能再被拆解成更小的部分. 当一个方法被声明成synchronized,要执行此方法的thread必须先取得一个token,我们将它称为锁.一旦该方法取得(或者说是获得)锁,它将运行此方法然后释放掉(或者返回)此锁.不管方法时怎样返回的(包括通过异常)该锁会被释放. 二.Volatile关键字 如果变量被标示为volatile,每次使用该变量时都必须从主寄存器中读出

Delphi版的Base64转换函数(修改版)

Delphi版的Base64转换函数(修改版) 重新组织编写Delphi的MD2.MD4.MD5类