CP第9章

第9章 函数

主要内容

关键字:return
运算符:*,&
1.函数及其定义方式
2.如何使用参数和返回值
3.如何把指针变量用在函数参数
4.函数类型 
9.1 复习函数
9.1.1 创建并使用简单函数
9.1.2 分析程序
函数原型(function prototype)告诉编译器函数starbar()的类型;
函数调用(function call)表明在此处执行函数;
函数定义(function definition)明确地指定了函数要做什么。
9.1.3 函数参数
9.1.5 声明带形式参数函数的原型
9.1.6 调用带实际参数的函数
9.1.7 黑盒视角
9.1.8 使用return从函数中返回值
9.1.9 函数类型

当float类型被作为参数传递时会被升级为double类型

9.3 递归
可以使用循环的地方通常都可以使用递归。有时用循环解决问题比较好,但有时用递归更好。递归方案更简洁,但效率却没有循环高。
递归函数必须包含能让递归调用停止的语句
最简单的递归形式是把递归调用置于函数的末尾,即正好在 return 语句之前。这种形式的递归被称为尾递归(tail recursion)
9.3.4 递归和倒序计算
void to_binary(int n10)
{
    char r;
    printf("输出结果是2进制");
    r=n10%2;
    if(n10>=2)
    {
        to_binary(n10/2);
    }r
    putchar(r==0?"0":"1");
}
9.3.5 递归的优缺点
优点是递归为某些编程问题提供了最简单的解决方案。缺点是一些递归算法会快速消耗计算机的内存资源。
//斐波那契数列的定义
unsigned long Fibonacci(unsigned int n)
{
    if(n>2)
    {
        return Fibonacci(n-1)+Fibonacci(n-2);
    }else
        return 1;
    
}
9.4 编译多源代码文件的程序
1.unix: 
	cc file1.c file2.c
2.linux:
	gcc file1.c file2.c
3.DOS命令行编译器:
	绝大多数DOS命令行编译器的工作原理和UNIX的cc命令类似,只不过使用不同的名称而已。其中一个区别是,对象文件的扩展名是.obj,而不是.o。一些编译器生成的不是目标代码文件,而是汇编语言或其他特殊代码的中间文件。
4.Windows和苹果的IDE编译器
	Windows和Macintosh系统使用的集成开发环境中的编译器是面向项目的
1.使用头文件
#include "hotels.h"指令中的双引号表明被包含的文件位于当前目录中(通常是包含源代码的目录)
#include <stdio.h>则不一样
9.5 查找地址:&运算符
指针(pointer)是 C 语言最重要的(有时也是最复杂的)概念之一,用于储存变量的地址
printf("In mikado(), pooh = %d and &pooh = %p\n", pooh, &pooh);
9.6 更改主调函数中的变量
//这个比较重要
这个始终改变不了
9.7 指针简介
//这个很重要,留待以后多看几遍
//通过指针来改变变量,详细见demo9_3.c
xchange2(&a,&b);
void xchange2(int *x,int *y)
{
    int temp;
    temp = *x;
    *x = *y;
    *y = temp;
}
//本来准备实现交换两个变量的地址,现在发现很难实现,留待以后努力。
可以省略ANSI C风格的函数原型中的形参名,如下所示:
void interchange(int *, int *);
地址传递和值传递:注意两者的区别
9.11 编程练习
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值