C语言之旅(9)递归、函数指针、宏、枚举、位运算

接下来我们要讲几个小的知识点:

递归:程序调用自身的编程技巧称为递归。这样说有点笼统了不容易理解,下面我们来做实验。

本来路了一个视频传不上来,算了。你们可以自己写一下这个程序,然后在20行处下个断点,监视变量num的变化,你会发现他从5逐步变成1.这是一个阶乘的函数,5*4*3*2*1=120;“递归”二字分开来分别是"传递遍历",然后是"回归"这里面是函数的自我调用也就是函数调用函数,所以就会执行5*4---->5*4*3----->5*4*3*2----->5*4*3*2*1;

最后在是1*2*3*4*5这样运算处120返回出去,函数调用结束,这就是递归函数的原理,你可以自己操作一下试试就看出来了。

函数指针:别看到这个名字就害怕,函数指针也是指针,也就是一个变量而已,就是一个名字,怕鸟。例如:void sort(int a);这是一个函数,那么这个函数的指针怎么表示呢,函数这种形式其实和普通的变量没什么差别,sort也是变量,只不过这个变量存储的是一个地址罢了而且是自身的地址。这个变量的类型是什么的,就像我前面说的去掉名字sort,剩下void (int a)就是这个函数的类型,所以说这个函数的返回值是一个void类型的,指向的参数是int类型的。那么指针函数就好说了,把变量名去掉换成*fp就行了。所以是void (*fp)(int);这个就是指针函数。当然对于fp应该存储void (int)类型的函数地址。

根据上图自己敲一遍通过下断点自己看就知道了。

宏:什么是宏,宏说白了就是单纯的替换,仅此而已。#号实在预编译阶段执行的,预编译阶段是编译程序的第一个阶段,他会把所有的#后面的"include"加载的头文件全部加载过来,还会把#define宏中的标识符全部替换成他要替换的东西,例如:#define A_B 32  对于这段代码,编译器会把源文件中的所有A_B都会替换成32.这就是宏的作用,他没有丝毫自己的意见,就是单纯的替换(请记住这句话)。枚举 格式:enum Myenum { 石头,剪子=10,布 };这就是枚举,枚举就相当于给一个集合起了一个名字一样。以后我们就可以通过这个名字去取集合中的任何数值。例如:enum Myenum a;a就可以也只能等于:石头,剪子,布其中的一个。如果我们没有定义的话,那么石头就相当于0.剪子是10的话,布就是11,没啥好说的。

位运算:

<<左移   >>右移

左移的时候末尾直接添0,右移的时候如果没有符号前面添0,有符号添加符号位。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值