一.回调函数:
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;
}