第九节 函数


9.1 复习函数


  • 函数原型 function prototype
  • 函数调用 function call
  • 函数定义 function definition
  • 形参 实参
  • 典型的ANSI C函数的定义:
    返回类型 名称(形参声明列表)

9.2 ANSI C函数原型

  • 主调函数把它的参数储存在被称为栈(stack)的临时储存区
  • 错误导致无法编译,而警告仍然允许编译

9.3 递归

  • printf使用%p打印地址
  • 递归的优缺点
   1.优点是递归为某些编程问题提供了最简单的解决方案
2.缺点是递归算法会快速消耗计算机的内存资源

9.4 编译多源代码文件的程序

  • scanf("%*s")跳至下一个空白字符

9.5 查找地址:&运算符

  • 一元运算符&给出变量的存储地址
  • PC地址通常用十六进制形式表示,每个十六进制对应四位
  • %p是输出地址的转换说明

9.6 更改主调函数中的变量

  • 典型例子:用函数交换两个值

9.7 指针简介

  • 指针(pointer)是一个值为内存地址的变量(或数据对象)
9.7.1 简介运算符 *
  • 使用间接运算符(indirection operator)找出内存地址所对应的值,又是也称为解引用运算符(dereferencing operator)
9.7.2 声明指针
  • 指针是一个新类型,需要声明指针所指变量的类型
    int * pi;
char * pc;
float * pf,* pg;
9.7.3 使用指针在函数间通信
  • 函数无法直接访问其他函数中的变量,这种限制访问保护了数据的完整性。但是,当确实需要在函数中访问另一个函数的数据时,可以把指针作为函数的参数。
  • 如果需要在被调函数中修改主调函数的变量,使用地址或指针作为参数。

最新文章

  1. 【BZOJ-2669】局部极小值 状压DP + 容斥原理
  2. cookie的实例
  3. EF性能调优
  4. 做最好的日期控件,My97 DatePicker 4.8 Beta4
  5. django admin site配置(二)
  6. quartus ii 中文注释乱码解决办法
  7. 1257: [CQOI2007]余数之和sum - BZOJ
  8. 0到N数其中三个数的全排列
  9. Intellij IDEA 使用Debug模式运行非常慢
  10. Flask学习记录之Flask-WTF
  11. jquery $.post 返回json数据
  12. Android之Handler的postDelayed()使用方法
  13. SVN Upgrade working copy
  14. 【译】10个机器学习的JavaScript示例
  15. TCP/IP协议栈 --- 网络层(IP 首部 和分片)
  16. 书籍--嵌入式Linux驱动开发
  17. maven clean或package报错
  18. javaIO流
  19. struts中的dojo控件sx:submit布局问题
  20. SQL Server在本地计算机上用SSMS(SQL Server Management Studio)登录不上,错误消息:(Microsoft SQL Server, Error: 18456)

热门文章

  1. (1)opencv的安装和遇到的问题
  2. 【One by one系列】一步步学习TypeScript
  3. 编译seastar
  4. 如何快速完成一份学术型PPT
  5. [Algo] 131. Deep Copy Linked List With Random Pointer
  6. quartz2.2.1bug
  7. NOIp2017TG解题报告
  8. 追踪tracking
  9. 吴裕雄--天生自然TensorFlow高层封装:使用TensorFlow-Slim处理MNIST数据集实现LeNet-5模型
  10. android中的适配器模式