iOS学习之C语言函数指针

  通过函数名调用函数:

  int max = maxValue(4, 5);
  printf("max = %d\n", max);
    
  函数类型:int (int, int)

  1.定义函数指针

  int *p = NULL;

  函数类型:int (int, int)

  函数指针的类型:int (*)(int, int)

  p是函数指针变量名

  int (*p)(int, int) = NULL;

  2.给函数指针赋值(使用函数首地址)

  函数存放在代码区,函数名是函数存储空间的首地址

  p = maxValue;

  3.通过函数指针调用函数和通过函数名调用函数一样。

  动态排序:

  使用回调函数,提高代码的复用性,提高代码的可修改性(当需求有变化时,可以快速简单的修改)

  

 Function.h
 struct student {

     ];  // 姓名
     int age;        // 年龄
     double score;   // 成绩
     int num;        // 学号

 };
 typedef
 // 打印所有学生的信息
 void printArray(Student stuArray[], int count);

 // 比较两个学生的年龄
 BOOL compareStuAge(Student stu1, Student stu2);

 // 比较两个学生的姓名
 BOOL compareStuName(Student stu1, Student stu2);

 // 比较两个学生的成绩
 BOOL compareStuScore(Student stu1, Student stu2);

 // 比价两个学生的学号
 BOOL compareStuNum(Student stu1, Student stu2);

 typedef BOOL (*FUNC)(Student, Student);

 // 排序函数
 void sortStudent(Student *stu, int count, FUNC p);
 Function.m

 // 比较两个学生的年龄
 BOOL compareStuAge(Student stu1, Student stu2) {
     return stu1.age > stu2.age;
 }

 // 比较两个学生的姓名
 BOOL compareStuName(Student stu1, Student stu2) {
     ;
 }

 // 比较两个学生的成绩
 BOOL compareStuScore(Student stu1, Student stu2) {
     return stu1.score < stu2.score;
 }

 // 比价两个学生的学号
 BOOL compareStuNum(Student stu1, Student stu2) {
     return stu1.num > stu2.num;
 }

 // 排序函数
 void sortStudent(Student *stu, int count, FUNC p) {

     ; i < count - ; i++) {
         ; j < count -  - i; j++) {
             ])) {
                 Student temp = stu[j];
                 stu[j] = stu[j + ];
                 stu[j + ] = temp;
             }
         }
     }
 }
 main.m
 int main(int argc, const char * argv[]) {

     Student stu1 = {, };
     Student stu2 = {, , };
     Student stu3 = {, -, };
     Student stu4 = {, , };
     Student stu5 = {, , };

     Student stuArray[] = {stu1, stu2, stu3, stu4, stu5};
     int count = sizeof(stuArray) / sizeof(Student);
 // 动态排序
     sortStudent(stuArray, count, compareStuNum);
     printArray(stuArray, count);
     sortStudent(stuArray, count, compareStuAge);
     printArray(stuArray, count);
     sortStudent(stuArray, count, compareStuName);
     printArray(stuArray, count);
     sortStudent(stuArray, count, compareStuScore);
     printArray(stuArray, count);
上一篇:Winform 打印PDF顺序混乱,获取打印队列


下一篇:C#调用Python脚本打印pdf文件