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


    只有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语句

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

  • 相关阅读:
    虚拟用户图分析
    概要图分析
    服务器资源监控视图
    场景监控之基本信息
    controller场景设计
    ip欺骗
    面试准备
    性能测试
    (一)总结
    bug的描述
  • 原文地址:https://www.cnblogs.com/fFaXzz/p/6659552.html
Copyright © 2020-2023  润新知