指针函数和函数指针(C语言)

@

指针函数

指针函数就是指针型函数,该函数返回一个地址。

#include <stdio.h>
//指针函数*point_fuc()
int *point_fuc(int a,int b,int *sum)
{
    *sum = a+b;
    return sum;//返回sum的地址
}
int main(void)
{
    int sum;
    printf("一开始sum的地址和值:%p,%d\n",&sum,sum);
    int *p = point_fuc(1,5,&sum);//用指针p指向sum的地址
    printf("返回值后sum的值=%d,和sum的地址=%p\n",sum,&sum);
    printf("用指针p来看返回值后sum的值=%d,和sum的地址=%p\n",*p,p);
    return 0;
}

可以把该函数point_fuc()抽象成普通的指针point_fuc。在函数内部运行完函数内的代码并返回一个地址,则point_fuc()就相当于普通指针point_fuc取地址的样子。在上面代码里,可以抽象为普通指针时的样子:

指针函数:

int *point_fuc(int a,int b,int *sum)
{
    *sum = a+b;
    return sum;//返回sum的地址
}
int *p = point_fuc(1,5,&sum);//传給指针p的地址就是函数里return的

抽象成普通指针:

int *point_fuc;
int *p = point_fuc;//将指针point_fuc指向的地址传给指针p

函数指针

函数指针就是函数型指针。通过函数指针指向一个函数,然后就可以通过该指针传递参数给它所指向的函数,并返回值。

#include <stdio.h>
//普通函数one(int c,int d)
int one(int c,int d)
{
    int sum;
    sum = c+d;
    return sum;
}

//普通函数mul(int c,int d)
int mul(int c,int d)
{
    int multiplication;
    multiplication = c*d;
}
int main(void)
{
//函数指针(*fuc_point)(int,int)
    int (*fuc_point)(int,int);//创建函数指针fuc_point
    fuc_point = one;//函数指针fuc_point指向one函数
    int main_sum = fuc_point(15,25);//通过函数指针fuc_point给one函数传值
    printf("main_sum=%d\n",main_sum);
    fuc_point = mul;//将函数指针fuc_point转为指向mul函数
    int multip = fuc_point(15,25);//通过函数指针fuc_point给mul函数传值
    printf("multip=%d\n",multip);
    return 0;
}

利用函数指针来传值给函数并返回值,相对于直接调用函数并返回值。

posted on   不叫灯笼椒  阅读(94)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示