目录
1.函数(主要说递归)
(1)说明
之前的第5章已经把函数的大致内容介绍过了,就不再赘述了。
这里就出几个问题考察下对函数的理解是否到位
函数在C程序中的作用,自定义函数在程序中的代码格式,main函数与其他函数的关系
本章主要讲的是函数中的递归用法
(2)递归
理解
C中函数允许它调用自己,这种调用的过程就叫做递归。要使用递归就必须包含能够结束递归的内容,递归在多数情况下的功用不如循环,但在处理某些内容方面的作用却是循环无可替代的(比如说在处理倒序时递归就比循环好用)。
在C程序中的书写格式
举例说明:
int main(void)
{
... //省略了无关步骤
up(1); //函数调用
...
}
int up(int n)
{
... //#1
if(n<4) //递归要求必须有能够结束递归的内容,这里就是通过if语句来终止递归
up(n+1); //递归下一级
... //#2
递归运行过程分析
我对这个过程的理解也并不到位,不过,我觉得目前只要知道递归中每级的变量n的值都是不同的,递归正序执行#1中的内容,倒序执行#2中的内容就够了。
递归与循环的比较
递归比循环占用的内存更多,因此运行效率比循环低;递归在处理某些问题时的作用是循环无可替代的。
2.指针
理解
定义:从根本上看,指针是一个值为内存地址的变量。
使用指针的原因:
主要是因为它能够操控改变地址与地址上的内容,进而实现各种操作。
通俗解释
我对指针通俗的理解就是把指针想象成一条电线,它一端连接着电源(也就是地址),另一端连接着电器(也就是指针指向的值),并且,这个指针是两端连接的地址与指向的值是能够改变的(对于指针变量而言)。
指针的书写格式(这里用伪代码的形式表示)
关键字+*+指针(例如int *A)。
重点指出:
(1)这里需要指出的是*和指针之间的空格是可选项,可有可无。
(2)并且指针是新的数据类型,并不是*前面的关键字类型就是指针的数据类型,有*前面的关键字的主要原因是是因为声明指针时必须指定指针所指向变量的数据类型,也就是说*前面的关键字类型就是指针所指向值的数据类型。
补充:与指针相关的运算符*与&
地址运算符:&
使用方法:后跟一个变量,给出这个变量的地址(与变量间没有空格)。
地址运算符:*
使用方法:后跟一个指针名或者地址,给出指针所指向的值。
使用指针的要求
(1)声明指针时必须指定指针所指向变量的数据类型。
(2)指针定义后要初始化,没有指向时指向NULL。
(3)指针赋值时一定要保证类型匹配,由于指针类型确定指针所指向对象的类型,因此初始化或赋值时必须保证类型匹配。
3.零碎知识
1.所有C函数都是平等的,都可以任意调用(包含main()函数,但很少用)。
2.函数原型的旧形式即将被淘汰。
4.地址就是变量在计算机内部的名字。