1.一个函数体内调用他自身时,被称为函数的递归。递归函数包含一种隐式的循环。递归一定要向已知方向递归,避免死循环。
2.在函数内部定义的变量就是局部变量,局部变量只在该函数内部有效,只在该函数内才能使用它们,在函数外部无法访问这些变量。定义在函数外部的变量是全局变量,全局变量可以被该源文件中的所有函数访问,它的作用域为:从定义该变量的位置开始,到该源程序结束。局部变量有形参,函数局部变量和代码块局部变量三种。
3.预处理是C语言(也包括Objective-C)的一部分,他们是一些特殊的命令。在编译器对C程序(或Objective-C程序)进行编译之前,编译器会对这些预处理命令进行处理,然后将这些预处理的结果于源程序一起进行编译。预处理命令有如下两个特征:1.预处理命令都必须以#开头。2.预处理命令通常位于程序开头部分。
4.当程序需要根据机器环境进行选择性的编译-对于特定的设备,只编译该设备相关的代码,就可借助条件编译来完成。C语言支持两组条件编译指令,一组是:#ifdef,#ifndef,#else,#endif。另一组是#if,#elif,#else,#endif。使用#ifdef命令时,后面跟的是宏定义,如 #ifdef 宏明称。使用#if命令时,后面跟的是表达式。
5.指针变量,定义指针变量的语法格式如下,类型 * 变量名。整个语法代表定义一个指向类项变量的指针变量。指针变量不能保存普通的值,只能保存指针(也就是变量的地址)。比如,int代表整型,int *则代表指向int型变量的指针类型。
6.快速排序,是一种速度非常快的交换顺序排序方式。它的基本思路是:从待排序的数据序列中任取一个数据(如第一个数据)作为分界值,所有比他小的数据元素一律放到左边,所有比他大的数据元素一律放到右边。经过这样一趟下来,该序列形成左右两个子序列,左边序列中数据元素的值都比分界值小,右边序列中数据元素的值都比分界值大。接下来对左右两个子序列进行递归,对两个子序列重新选择中心元素并依此规则调整,直到每个子表的元素只剩一个,排序完成。
7.块,语法格式:
^(块返回值类型) (形参类型1 形参1,形参类型2 形参2.....){
//块执行体
}