函数指针充当函数的参数

时间:2019-02-27 05:35:51

标签: function-pointers

这是我的代码:

void * test(void *args) {
    ...
}

int main() {
    ...
    ret = pthread_create(&tid, NULL, test, NULL);
    ...

    return 0;
}

当然,它运作良好。但是我发现:

void test(void) {
    ...
}

int main() {
    ...
    ret = pthread_create(&tid, NULL, (void*)&test, NULL);
    ...

    return 0;
}

也可以成功编译。
函数pthread_create的第三个参数是:

void *(*start_routine) (void *)

我的问题是:
为什么编译器将(void*)&test视为void* (*)(void *)

gcc版本:5.4.0 20160609(Ubuntu 5.4.0-6ubuntu1〜16.04.10)

0 个答案:

没有答案