C++ function pointers

34次阅读

共计 1126 个字符,预计需要花费 3 分钟才能阅读完成。

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);

正文完
 0