C语言初阶:函数,函数指针解决实际问题

文章目录

  • 1. 函数指针
  • 2. 函数指针传入函数和函数指针组成指针数组
  • 3. 使用main()函数进行四则运算
  • 4. 函数指针解决方法优化
  • 5. qsort 对数组排序
  • 6. 字符串排序

1. 函数指针

函数名就是一个地址,所以函数名就能放在指针中

定义指针的方法:
void (*p)() = Func;

调用函数指针的方法:
(*p)(); 或者 p();
和数组的道理一样

有参数和有返回值的调用函数指针:
int (*padd)(int a,int b) = add;
printf("%d\n",padd(100,200));
或者 printf("%d\n",(*padd)(100,200));

体会函数指针的用法:

#include 
void Func(){
   
        printf("Hello World\n");
}

int add(int a,int b){
   
        return a+b;
}

int main(){
   
        Func();
        printf("%p\n",Func);
        printf("%p\n",&Func);

        void (*p)() = Func;  //p就是函数指针
        (*p)();
        p();
        // ()运算符 ==>  Func() p()

        int arr[3];
        int* parr = arr;
        // []运算符 ==>  arr[i] parr[i]

        int (*padd)(int a,int b) = add;

        printf("%d\n",padd(100,200));
        printf("%d\n",(*padd)(100,200));
}

结果为:

Hello World
0x4005d6
0x4005d6
Hello World
Hello World
300
300

对于函数指针,可以理解为 int (*padd)(int a,int b) ===> int add(int a,int b)

2. 函数指针传入函数和函数指针组成指针数组

使用函数指针传入函数,多个函数指针组成指针数组,做加减乘除运算:

#include 
int add(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 cal(int (*padd)(int,int),int a,int b){
   
        return padd(a,b

你可能感兴趣的:(C语言,c语言)