其他分享
首页 > 其他分享> > 函数指针

函数指针

作者:互联网

下文主要讲述函数指针,为了防止与指针函数区分,首先理解两句话。
第一:指针函数是函数,其返回值为指针。
第二:函数指针是指针,是一种指针类型。

点击查看代码
#include<iostream>

using namespace std;
//函数func
void func() {
    cout << "函数 func()" << endl;
}
//函数指针变量func_ptr,指向函数类型为func
void (*func_ptr)();
//函数指针类型FUNC_PTR, 指向函数func()的
typedef void (*FUNC_PTR)();

int main() {
    //第一种函数调用
    func();
    //第二种函数调用,使用函数指针变量 func_ptr
    func_ptr = func;
    func_ptr();
    (*func_ptr)();
    //同时声明与初始化函数指针变量
    void (*func_ptr2)() = func;
    func_ptr2();
    //第三种函数调用,使用函数指针变量 ptr
    FUNC_PTR ptr = func;
    ptr();

    return 0;
}
点击查看代码
#include<iostream>

using namespace std;
//函数func
void func() {
    cout << "函数 func()" << endl;
}
//函数指针变量func_ptr,指向函数类型为func
void (*func_ptr)();
//函数指针类型FUNC_PTR, 指向函数func()的
typedef void (*FUNC_PTR)();
// 作为函数参数,version 1
void Use_func (string userName, FUNC_PTR myfunc) {
        cout << userName << " 使用";
        myfunc();
}

// 作为函数参数,version 2
void Use_func2 (string userName, void (*myfunc)() ) {
        cout << userName << " 使用";
        myfunc();
}
// 作为函数返回值,version 1
FUNC_PTR Return_func (string userName, FUNC_PTR myfunc) {
        cout << userName << " 使用";
        return myfunc;
}
// 作为函数返回值,version 2
void (* Return_func2 (string userName, FUNC_PTR myfunc) )() {
        cout << userName << " 使用";
        return myfunc;
}
int main() {
    //作为变量:使用函数指针变量 ptr
    FUNC_PTR ptr = func;
    ptr();
    //作为函数参数:
    Use_func("jren", func);
    Use_func2("jren", func);
    //作为函数返回值:
    Return_func("jren", func)();
    Return_func2("jren", func)();
    
    return 0;
}
* 3.函数指针的进阶理解 **void (* )() 等价于 int** 比如数组:int arr[4]; void(*arr[4])();
点击查看代码
#include<iostream>

using namespace std;
//函数func
void func() {
    cout << "函数 func()" << endl;
}
//函数指针变量func_ptr,指向函数类型为func
void (*func_ptr)();
//函数指针类型FUNC_PTR, 指向函数func()的
typedef void (*FUNC_PTR)();

int main() {

    int* arr[4];
    int a0 = 10;
    arr[0] = &a0;

    void(*arr2[4])();
    arr2[0] = func;
    //
    arr2[0]();
    //
    (*arr2[0])();
    FUNC_PTR arr3[4];
    arr3[0] = func;
    //
    arr3[0]();
    //
    (*arr3[0])();


    return 0;
}

标签:函数,int,void,func,函数指针,指针
来源: https://www.cnblogs.com/data-man/p/16387531.html