C语言中通过函数指针调用函数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

提示:以下是本篇文章正文内容,下面案例可供参考

一、函数指针P调用函数max

#include <stdio.h>
void main()
{
    int max(int x, int y);
    int (*p)();
    int x, y, z;
    p = max;
    printf("请输入两个数:\n");
    scanf("%d %d", &x, &y);
    z = (*p)(x, y);
    printf("max=%d", z);
}
int max(int a, int b)
{
    if (a > b)
        return a;
    else
        return b;
}

运行结果为:

请输入两个数:
22 56
max=56

二、函数中的形参和实参

1.形参

形参的作用:

  • 形参是定义函数时在括号里定义的变量,它只是申明用的,是没有值的。
  • 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。

形参的特点:

  • 变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此, 形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。

2.实参

实参的作用:

  • 实参是调用函数时 传给形参的值,是有值的。实参是形参被具体赋值之后的值,参加实际的运算,有实际作用。
  • 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。

实参的作用:

  • 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们 都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使实参获得确定值。

3.举例

#include <stdio.h>


void test(int* p)    //此处P为形参
{
    int x = 4;
    p = &x;
    printf("在函数中p中的地址为: % d\n", p);
}
int main()
{
    int e = 3;
    int* p = &e;      //此处P为实参
    printf("main:p中存的地址为:%d\n", p);
    test(p);
    printf("main:p中存的地址为: % d\n", p);
    return 0;
}

运行结果为:

main:p中存的地址为:14416364
在函数中p中的地址为:  14416120
main:p中存的地址为:  14416364
  • 6
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言的指针函数是指返回值为指针类型的函数,它们在函数的定义和调用上与普通函数有所不同。 指针函数的定义需要在函数名前加上返回类型为指针的声明,并在函数体内返回一个指针类型的值。例如,我们可以定义一个返回整型指针的函数如下: ```c int* allocateIntArray(int size) { int* array = (int*)malloc(size * sizeof(int)); return array; } ``` 在调用指针函数时,需要用一个与返回类型相匹配的指针变量接收返回值。例如,调用上述函数并将返回值存储在指针变量: ```c int* myArray = allocateIntArray(5); ``` 上述代码,myArray是一个整型指针变量,它用于存储allocateIntArray函数的返回值。这个返回值是一个指向分配的整型数组的指针。 指针函数的调用过程,我们还需要注意以下几点: 1. 为了避免内存泄漏,我们通常需要在不使用指针的时候手动释放内存,可以使用free函数来释放通过malloc分配的内存。 2. 在函数内部分配的内存空间返回给调用者后,我们应该确保在使用这块内存之前不会被其他操作修改或释放掉,否则可能导致程序运行时错误。 3. 指针函数也可以作为参数传递给其他函数,使得我们可以更方便地使用和操作指针类型的数据。 总结来说,指针函数是具有返回值为指针类型的函数,其定义和调用方式与普通函数有所区别。使用指针函数可以更灵活地操作和传递指针类型的数据,但在使用时需要注意内存的释放和确保指针的有效性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值