1.const 关键字 : 它限定变量不允许被修改
修饰整形变量时 const int a 等价于 int const a
const : 左结合性
2.传入参数 :当参数指针只做传入参数使用时,通常使用const 修饰
传出参数 :
必须是指针,在函数内部进行间接引用
在函数体内部,第一次调用时指向的空间无意义。
函数调用之后,它指向的空间有意义,并作为函数返回值,
传入,传出参数 : 第一次调用时,指向的空间有意义。并在最后作为函数返回值返回。
切记 : 不可返回函数中普通的局部变量的地址
3.函数返回值时指针
(1).可以返回传入的地址
(2).可以返回函数中静态内存的指针
(3).可以返回动态分配的内存的指针
4.函数指针的一般定义形式
函数返回值类型 (*指针变量名)(形参列表)
5.定义函数指针的根本目的 : 通过指针调用函数
本质区别 : 函数指针可以在程序运行的过程中动态地决定调用哪一个函数
6.回调函数
回调函数的一个重要应用实例就是实现“泛型”算法。
1 #include <stdio.h> 2 3 typedef void (*print_t)(void *); 4 5 /*该函数用来调用回调函数*/ 6 void print(print_t func, void *arg) 7 { 8 func(arg); 9 } 10 /*回调函数1*/ 11 void say_hello(void *arg) 12 { 13 printf("%s ", (char *)arg); 14 } 15 16 /*回调函数2*/ 17 void count(void *arg) 18 { 19 printf("%d ", (int)arg); 20 } 21 22 int main(void) 23 { 24 print(say_hello, (void *)"hello world!"); 25 print(count, (void *)100); 26 27 return 0; 28 }
7.泛型算法
泛型算法的优势着重体现在对数据类型的普适性上 ,即: 对同一类问题,要操作的数据类型可能不同,但解决办法应该相同
泛型算法的指导思想就是代码的复用。
泛型算法在实现的过程中解决算法的大部分流程,只留下少量的处理细节的代码给使用泛型函数的用户去完成
8.函数指针数组
int (*a[10])(int, int);
9.扩展 :使用typedef 定义函数指针
typedef int (*p_t)(int, int)
好吧,,今天想错了,。。等会得重新实现一下。
英语: parameter(参数) callback(回调) allocator(分配器)
想俺家小宝贝了。。晚安。。么么