9.函数

9.1

使用函数可以实现代码复用,更加方便

9.1.1 创建并使用简单函数

有返回值的时候前面要添加返回类型,没有就添加void

函数中的变量是局部变量,不能在函数外直接应用

9.1.3 函数参数

void show_n_char(char ch, int num);

要以此形式传入参数,但是传入的参数在函数中改变了对外界此参数无影响,要想改变参数值需传入地址

9.1.4 定义带形式参数的函数

void show_n_char(char ch, int num)

里面的char ch和int num为形参,调用函数的时候需要传入实参

形参需要定义类型,实参为了避免出错应与形参一致

9.1.5 声明带形式参数函数的原型

创建了一个函数,为了方便一般在主函数后面创建,但是要在主函数前面声明一下,让主函数知道有这个函数,不然会显示未定义

9.1.8 使用return从函数中返回值

函数有返回值时应该在函数最后return出来

return后面的语句不执行

还可以这样使用return:

return;

适用于没有返回值的情况

9.1.9 函数类型

int main(void);

int 就是该函数的类型,并且在函数中要返回这一类型的参数。

9.2 ANSI C函数原型

ANSI C标准要求在函数声明时还要声明变量的类型

9.2.3 无参数和未指定参数

void print_name(); 未指定参数

void print_name(void); 无参数

9.2.4 函数原型的优点

让编译器捕获在使用函数时可能出现的许多错误或疏漏

9.3 递归

在函数中用此函数

9.3.3 尾递归

把递归调用置于函数的末尾

9.3.5 递归的优缺点

优点是递归为某些编程问题提供了最简单的解决方案。

缺点是一些递归算法会快速消耗计算机的内存资源。

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

9.4.1 UNIX

许多UNIX系统都给cc命令起了一个别名用作其他编译器命令

将编译两个文件并生成一个名为a.out的可执行文件:

cc file1.c file2.c

生成两个名为file1.o和file2.o的目标文件

使用以下命令编译第1个文件,并与第2个文件的目标代码合并:

cc file1.c file2.o

9.4.2 Linux

同上

9.4.3 DOS命令行编译器

绝大多数DOS命令行编译器的工作原理和UNIX的cc命令类似,只不过使用不同的名称而已。

对象文件的扩展名是.obj

9.4.5 使用头文件

include "hotel.h"

在头文件中写函数,主文件中使用,提高代码复用率,让代码模块化

9.5 查找地址:&运算符

%p是输出地址的转换说明

在FORTRAN中,子例程会影响主调例程的原始变量

在 C语言中不是这样。每个C函数都有自己的变量。这样做更可取,因为这样做可以防止原始变量被被调函数中的副作用意外修改

9.6 更改主调函数中的变量

假设要交换两个变量x和y的值

1:

temp = x;

x = y;

y = temp;

2:

x=x+y

y=x-y

x=x-y

3:

x=x^y

y=x^y

x=x^y

更改主函数中的参数时,可以通过函数内定义新变量接收然后传回,再就是传入指针

9.7.1 间接运算符:*

ptr = &bah; ptr代表地址

val = *ptr val代表ptr对应的变量

地址运算符:&

后跟一个变量名时,&给出该变量的地址。

地址运算符:*

后跟一个指针名或地址时,*给出储存在指针指向地址上的值。

9.7.2 声明指针

int * pi;   // pi是指向int类型变量的指针

int* pi和 int *pi是一样的

*和指针名之间的空格可有可无。

指针实际上是一个新类型,不是整数类型

ANSI C专门为指针提供了%p格式

9.7.3 使用指针在函数间通信

void interchange (int * u, int * v); 声明这样写

interchange(&u,&v) 调用这样写

形参名可以省略

函数的返回类型:

函数的返回类型指的是函数返回值的类型。如果返回值的类型与声明的返回类型不匹配,返回值将被转换成函数声明的返回类型。

函数签名:

函数的返回类型和形参列表构成了函数签名。

posted @ 2022-01-30 15:25  buguai_lxw  阅读(70)  评论(0)    收藏  举报