函数指针与指针函数

Posted WingPig

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数指针与指针函数相关的知识,希望对你有一定的参考价值。

函数指针和指针函数

指针函数的本质是一个函数,只不过其返回值是一个指针类型的变量。如

#include <stdio.h>
#include <stdlib.h>

int *max(int x,int y);//声明函数原型,返回值为int型指针

int main(int argc, const char * argv[]) {
    printf("Hello, World!\n");
    printf("max %d\n", *max(1,2));
    return 0;
}

int *max(int x,int y){
    int *m = malloc(sizeof(int));
    *m = x>y?x:y;
    return m;
}

函数指针的本质是一个变量,该变量的内容指向一个函数。如

#include <stdio.h>

int max(int x,int y);//声明函数原型
int (*f)(int x,int y);//定义一个函数指针类型的变量
int main(int argc, const char * argv[]) {
    printf("Hello, World!\n");
    printf("max %d\n", max(1,2));
    f = max;
    printf("max %d\n",f(1,2));
    return 0;
}

int max(int x,int y){
    return x>y?x:y;
}

其实可以把函数指针和指针函数与字符串指针和字符串变量相比较学习。函数指针中的函数名是一个常量,该常量指向函数在内存中的地址;指针函数则是一个变量,该变量的内容也是函数在内存中的地址,只不过变量可以重新赋值,而常量在程序载入内存中就已经确定,无法进行重新复制。

以上是关于函数指针与指针函数的主要内容,如果未能解决你的问题,请参考以下文章

函数指针与回调函数

十六函数指针初级(函数指针与函数调用)

C 语言指针间接赋值 ( 指针作为 函数参数 的意义 | 间接赋值 代码示例 )

结构体中函数指针与typedef关键用途(函数指针)

使用 std::thread 函数 C++11 将指针作为参数传递

函数指针与回调函数