专栏首页数据分析与挖掘c语言之函数指针和指针函数的区别

c语言之函数指针和指针函数的区别

函数指针:是指向函数的指针变量,因而函数指针本身应该是指针变量,只不过指针变量指向函数。

指针函数:带指针的函数,即本质是一个函数。

函数指针实例:

#include<stdio.h>
#include<iostream>
int max(int, int);
int min(int, int);
int add(int, int);
int process(int a, int b, int(*func)(int a, int b));
int main() {
    int a, b;
    printf("请输入a,b的值,以空格隔开:\n");
    scanf_s("%d %d", &a, &b);
    printf("a=%d,b=%d,max=%d\n", a, b, process(a,b,max));
    printf("a=%d,b=%d,min=%d\n", a, b, process(a, b, min));
    printf("a=%d,b=%d,add=%d\n", a, b, process(a, b, add));
    system("pause");
    return 0;
}
int max(int a, int b) {
    if (a >= b) {
        return a;
    }
    else
    {
        return b;
    }
}
int min(int a, int b) {
    if (a >= b) {
        return b;
    }
    else
    {
        return a;
    }
}
int add(int a, int b) {
    return a + b;
}
int process(int a, int b, int(*func)(int a,int b)) {
    return (*func)(a, b);
}

指针函数实例:

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

char* initMemory() {
    //开辟32个字节的内存,并用字符指针s指向该内存
    char* s = (char*)malloc(sizeof(char) * 32);
    return s;
}

int main() {
    //定义一个指针接收函数返回值
    char* ptr = initMemory();
    strcpy(ptr, "hello world");
    printf("%s\n", ptr);
    //释放内存
    free(ptr);
    system("pause");
    return 0;
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • c语言之指向函数的指针

    绝命生
  • c++之初始化列表

    绝命生
  • c++之内存模型

    堆区:由程序员分配释放,若程序员不释放,则程序结束时由系统释放。在c++中主要利用new在堆区开辟内存。

    绝命生
  • C++ 函数指针的定义方法及使用

    第一种,c语言通用。定义一个process_job函数指针类型,返回值为 int ,函数参数为int a,int b。使用用两种方法。

    forxtz
  • ICPC Asia Shenyang 2019 Dudu's maze

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    用户2965768
  • 学生时代所学的一些 C 语言知识点回顾(1)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    耕耘实录
  • Educational Codeforces Round 67 (Rated for Div. 2) A~E 贪心,构造,线段树,树的子树

    Educational Codeforces Round 67 (Rated for Div. 2)

    用户2965768
  • LeetCode 164. Maximum Gap (排序)

    题解:首先,当然我们可以用快排,排完序之后,遍历一遍数组,就能得到答案了。但是快速排序的效率是O(n* logn),不是题目要求的线性效率,也就是O(n)的效率...

    ShenduCC
  • 位操作运算有什么奇技淫巧?(附源码)

    比如说16位二进制数A:1001 1001 1001 1000,如果来你想获A的哪一位的值,就把数字B:0000 0000 0000 0000的那一位设置为1.

    刘盼
  • 浙大版《C语言程序设计(第3版)》题目集 习题6-2 使用函数求特殊a串数列和

    给定两个均不超过9的正整数a和n,要求编写函数求a+aa+aaa++⋯+aa⋯a(n个a)之和。

    C you again 的博客

扫码关注云+社区

领取腾讯云代金券