c语言复习:函数

注:本文是对苏小红版c语言程序设计第七章的笔记

  1. 函数是c语言模块化程序设计的最小单位
  2. 内部变量:函数体内部定义的变量只能在函数体内访问,称为内部变量。
    形式参数也是内部变量
  3. 若函数没有返回值,则用void定义返回值的类型
    若函数不需要入口参数,则须用void代替函数头部中形参表中的内容。
  4. 函数的返回值只有一个,即便有多个return语句
    (无返回值的函数中若程序不是运行到最后一条语句再返回,可写成return;
  5. main函数中return返回的0等价于调用exit()提供的参数
  6. 函数原型声明:long Fact(int n);
    在函数原型的形参列表中,形参变量名可以省略,只给出形参类型即可(也可以省略形参类型)
  7. 对函数unsigned long Fact(unsigned int n);:
    若传入一个负数(如-1), 则会出错:因为会把-1的符号位(1)解释成了数据位,从而将有符号整型数-1解释成了无符号的4字节整数
  8. 一个递归调用函数必须包含如下两部分
    1. 一般情况
    2. 基线情况(能够用来结束递归调用过程的条件)
  9. 迭代不断修改循环控制变量,直到它是循环条件为假为止;递归则不断产生最初问题的简化副本,知道简化为递归的基线情况。
  10. 每个迭代程序原则上都可以转换成等价的递归程序,反之不然。为了提高程序的执行效率,应尽量用迭代形式代替递归形式(递归程序的时空效率偏低)。
  11. 全局变量会在不指定初值的情况下自动初始化为0.
  12. 没有制定变量的存储类型,那么变量的存储类型就缺省为auto(自动变量(动态局部变量)),自动变量在定义时不会自动初始化。
  13. 函数的参数传递是“单向的值传递”,只能将实参的值传递给形参,而不能返向将形参的值传递给实参,形参值的改变也不会影响实参。
  14. 若不希望形参值在函数内被修改,那么只要将关键字const放在形参前面,将形参声明为常量即可。
  15. 静态变量:与程序共存亡。值可改变,有“记忆功能”
  16. 静态局部变量只能在定义它的函数内部访问,静态全局变量可以在定义它的文件内的任何地方访问。
  17. 外部变量:用extern进行声明(而不是定义,编译器不对其分配内存)
    是外部变量。若希望在定义点之前或者其它文件中使用它,则需要声明。
    没有显式初始化的外部变量有编译程序自动初始化为0.没有显式初始化的外部变量有编译程序自动初始化为0.
  18. 模块分解的基本原则:
    1. 高聚合(模块功能相对独立和单一)
    2. 低耦合(模块之间的联系越松散越好(模块对外的接口越简单越好))
  19. 自顶向下,逐步求精
  20. 断言:用于调试程序,不能作为程序的功能
    1. 检查程序中的各种假设的正确性,例如一个计算结果是否在合理的范围内
    2. 证实或测试某种不可能发生的状况确实不会发生,例如一些理论上永远不会执行到的分支(如switch的default后)确实不会被执行
      e.g.:
#include <assert.h>
...
assert(number >= 0 && number <= 100)
...

猜你喜欢

转载自blog.csdn.net/XIAOHEwenjue/article/details/84587740