C语言学习--指针函数与函数指针

 

 

 

#include<stdio.h>
#include<string.h>

//指针函数:  是一个函数, 但是这个函数的返回值类型是一个指针
//函数指针: 是一个指针, 这个指针的指向是一个函数
//下面是指针函数 int * fun() { int a = 10;//a 是一个局部变量 int *p; p = &a; return p; } int main() { int *p1 = fun(); printf("%d", *p1); }
//10
#include<stdio.h>
#include<string.h>

//指针函数:  是一个函数, 但是这个函数的返回值类型是一个指针
//函数指针: 是一个指针, 这个指针的指向是一个函数

void fun1(int a , int b){
    printf("a+b = %d", a+b);
}

//函数指针的定义个数: 函数的返回值类型(*函数指针名)(函数的形参)
void (*pfun) (int a , int b);//函数名, 就是函数的首地址

int main(){
    pfun = fun1;
    pfun( 10, 11); // a+b = 21
}
#include<stdio.h>
#include<string.h>

//指针函数:  是一个函数, 但是这个函数的返回值类型是一个指针
//函数指针: 是一个指针, 这个指针的指向是一个函数

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

int sub(int a, int b ){
    return a-b;
}

//指针函数, 类似于python把函数作为形参传给另外一个函数,但是这里的函数新参不需要指定, 在调用的时候指定就可以了 
void fun3(int (*pf)(int, int ), int x , int y)
{
    printf ("%d\n", pf(x,y));
}

int main(){
    fun3(add, 10, 11);// 在调用函数fun3的时候再指定指针函数为add()
    fun3(sub, 10, 11);//在调用函数fun3的时候再指定函数为sub()
}

21
-1
#include<stdio.h>
#include<string.h>

//指针函数:  是一个函数, 但是这个函数的返回值类型是一个指针
//函数指针: 是一个指针, 这个指针的指向是一个函数


//函数指针取别名

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

int sub(int a, int b ){
    return a-b;
}


typedef  int (*pf)(int , int);//函数指针取别名, 别名就是他自己, 并且别名可以当做类型去使用

void fun3(pf pf1, int x , int y)//别名pf 可以当做类型去使用, 定义一个pf 类型的变量pf1
{
    printf ("%d\n", pf1(x,y));
}

int main(){
    fun3(add, 10, 11);// 在调用函数fun3的时候再指定指针函数为add()
    fun3(sub, 10, 11);//在调用函数fun3的时候再指定函数为sub()
}

 

posted @ 2023-01-08 17:18  朵朵奇fa  阅读(30)  评论(0编辑  收藏  举报