一.回调函数:
1.什么事回调函数:通过函数指针调用函数
2.应用例子:
https://blog.csdn.net/hot_water_oh/article/details/136572650?spm=1001.2014.3001.5501
(此链接为提到转义表所在博客的链接)
依然以转义表为例,
#include<stdio.h>
int add(int a, int b)
{return a + b;
}
int sub(int a, int b)
{return a - b;
}
int dul(int a, int b)
{return a * b;
}
int div(int a, int b)
{return a / b;
}
void calc(int (*pf)(int,int))//这个部分就是在进行函数回调
{int ret = 0;int x, y=0;printf("输⼊操作数:");scanf("%d %d", &x, &y);ret = pf(x, y);printf("ret = %d\n", ret);
}
int main()
{int input = 0;int x = 0;int y = 0;scanf("%d", &input);do{switch (input){case 1:calc(add);//break;case 2:calc(sub);//break;case 3:calc(dul);//break;case 4:calc(div);//break;case 0:break;}} while (input);return 0;
}
倒不是说学会这部分很关键,但是这部分对优化代码帮助蛮大
二.qsort【原理是快速排序】
1.含义:
2.1.1含义:qsort是一个能为数组元素进行排序的库函数。
qsort 作为库函数,当然有他的头文件#include<stdlib.h>
2.1.1组成:
qsort ,的组成分为四部分,分别为:
qsort(arr, sz, sizeof(int), cmp)
2.代码应用
#include<stdio.h>
#include<stdlib.h>
int cmp(const void* a, const void* b)//
{return (*(int*)a - *(int*)b);
}
int main()
{int arr[] = { 1,9,3,6,8,7 };int sz = sizeof(arr) / sizeof(arr[0]);qsort(arr, sz, sizeof(int), cmp);//int i = 0;for (i = 0; i < sz; i++){printf("%d", arr[i]);}return 0;
}
//输出结果为1 3 6 7 8 9
3.用处qsort详解:
除了可以对数字进行排序,同样可以依靠qsort对字符串等进行排序。
三.结构体指针:
1.什么是结构体:
#include<stdio.h>
struct stu //
{char name[20];int age;
};
int main( )
{struct stu s= { "zhang",20 };//printf("%s %d", s.name, s.age);return 0;
}
2.结构体指针
与之前学过的整形指针,字符指针,数组指针做类比,得出结构体指针就是指针类型为结构题的指针。
#include<stdio.h>
struct stu
{char name[20];int age;
};
int main( )
{struct stu s= { "zhang",20 };printf("%s %d", s.name, s.age);struct stu* ps = &s;//printf("%s %d", (*ps).name, (*ps).age);//printf("%s %d", ps->name, ps->age);//这样也可以访问return 0;
}