C语言-指针3

📅 2026/8/21 11:04:44
C语言-指针3
函数指针变量用于存放函数地址的指针变量。函数名就是函数地址函数名也是函数地址。函数指针变量的定义使用如下int sum(int a,int b) { return ab; } int main() { int (*p)(int a, int b) sum;//定义和解引用时函数指针变量都必须打上括号 int c (*p)(3, 4);//通过函数指针变量解引用函数 printf(%d, c); return 0; }关键字typedef用于重命名数据类型当用普通方法初始化指针时int* p1,p2;p1是指针p2是整形变量如果用“typedef int* pa_t”重命名后定义“pa_t p1,p2”(此时p1,p2均为指针)。用typedef重命名数组指针变量代码如下int main() { int arr[7] { 1,2,3,4,5,6,7 }; typedef int (*pa_t)[7]; pa_t p arr; return 0; }函数指针数组选择数组的地址调用不同函数实现跳转。形如“int (*pfarr[4])(int a,int b)”(将函数指针中的指针变量区域进行改变)用函数指针数组实现一个计算器的单如下int sum(int a,int b) { return a b; } int sub(int a, int b) { return a - b; } int mul(int a, int b) { return a * b; } int div(int a, int b) { return a / b; } int main() { int (*parr[4])(int a, int b) { sum,sub,mul,div };//转移表 int m 0; int n 0; int input 0; printf(请输入参数); scanf(%d%d, m, n); printf(请选择要进行的运算); scanf(%d, input); int c parr[input](m,n); printf(%d , c); return 0; }回调函数当一个函数的指针被当作参数传给另一个函数另一个函数通过指针调用它时这个就是回调函数。qsort()是一个库函数用来对数据进行排序qsort()的用法如下void qsort(void* base,size_t num,size_t size,int (*compar)(const void* p1,const void* p2)void* base:指向了要排序的数组的第一个元素地址size_t num:数组中的元素个数size_t size:数组中每一个元素的内存空间字节数int (*compar)(const void* p1,const void* p2):函数指针用于比较数组中任意两个数的大小。这里的用于比较大小的函数其返回值必须能够体现出p1,p2所指向数据的大小关系*p1*p2:返回一个大于0的数默认p1在p2左边*p1*p2:返回一个小于0的数*p1*p2:返回0.int com_t(const void* p1, const void* p2)//比较整形变量函数使用qsort时需要自己写 { return *(int*)p1 - *(int*)p2;//空指针不能直接解引用需要先强转类型 } int main() { int arr[7] { 1,5,7,2,6,8,9 }; int sz sizeof(arr) / sizeof(arr[0]); int i 0; qsort(arr,sz,4,com_t); for (i 0;i sz;i) { printf(%d , arr[i]); } return 0; }