2020-04-01 |

函数指针

由于指针可以指向任何内存位置中的地址,它们也可以指向可执行代码的开头。

指向函数或函数指针的指针指向内存中函数的可执行代码。函数指针可以存储在数组中,也可以作为参数传递给其他函数。

函数指针声明使用*就像使用任何指针一样:

    return_type (*func_name)(parameters) 

括号(*func_name)很重要。如果没有它们,编译器会认为函数返回了一个指针。

声明函数指针后,必须将其分配给函数。以下短程序声明函数,声明函数指针,将函数指针赋给函数,然后通过指针调用函数:

#include <stdio.h>
    void say_hello(int num_times); 
    /* 函数 */
    
int main() {
    void (*funptr)(int);  /* 函数指针 */
    funptr = say_hello;  /* 指针分配 */
    funptr(3);  /*函数调用 */
    
    return 0;
}

void say_hello(int num_times) {
    int k;
    for (k = 0; k < num_times; k++)
    printf("Hello\n");
}

函数名指向可执行代码的开头,正如数组名指向其第一个元素一样。因此,尽管funptr=&say_hello和(*funptr)(3)等语句是正确的,但在函数赋值和函数调用中不必包含地址运算符和间接运算符*。

0

python教程
java教程
php教程
php+mysql教程
ThinkPHP教程
MySQL
C语言
css
javascript
Django教程

发表评论

    评价:
    验证码: 点击我更换图片
    最新评论