C++ function pointers

Function pointers point to the address of the executable code of the function. You can use pointers to call functions and to pass functions as arguments to other functions.

Syntax

Declaration

A simple example:

void (*foo) (int)

A function pointer foo is declared in the above code, which can point to a function with an integer as argument and no return. It's as if you're declaring a function called *foo, which takes an int and returns void; now, if *foo is a function, then foo must be a pointer to a function. (Similarly, a declaration like int *x can be read as *x is an int, so x must be a pointer to an int.)

The key to writing the declaration for a function pointer is that you're just writing out the declaration of a function but with (*func_name) where you'd normally just put func_name.

Initialization

To initialize a function pointer, you must give it the address of a function in your program.

void print(int x){
    printf( "%d\n", x );
}

int main(){
    // 1. declaration + initialization
    void (*foo)(int) = & print; 
    // 2. declaration; initialization
    void (*foo_2)(int);
    foo_2 = & print;
    // 3. typedef
    typedef void(*printInt)(int);
    printInt foo_3 = & print;
    return 0;
}

Méthode d'usage

The function pointer is similar to the array. where a bare array decays to a pointer, but you may also prefix the array with & to request its address.

foo(2);
(*foo)(10);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值