发新话题
打印

指针函数问题?

指针函数问题?

谁能给我解析一下:
void(*p)(viod *)这个指针函数中的(viod *)可以指代什么?
                                   可传递什么参数?      

TOP

传递函数指针啊
举个例子:
int  pthread_create(pthread_t  *  thread, pthread_attr_t *
       attr, void * (*start_routine)(void *), void * arg);


void *
test_thr ()
{
    for(;;)
    {
      ...
     }
}
void
test()
{
    pthread_t irb;
    pthread_create (&irb, NULL, (void *) test_thr, NULL);
}      

TOP

谢谢了。
还有您上面void * (*start_routine)(void *)的定义与
           void * (*start_routine)()有何区别?      

TOP

这个应该是指带的参数吧,因为我没有用参数,所以在参数那,我用了NULL,实际调用可以是:
void *
test_thr (void *arg)
{
  while (1) { printf(“%s “, (char *)arg); sleep(2); } return NULL;
  
}
void
test()
{
pthread_t irb;
pthread_create (&irb, NULL, (void *) test_thr, "hello world");
}      

TOP

哦,有一点眉目了。谢谢了。
在定义中的start_routine传递的是函数的地址,如果是指针函数且函数带的参数为指针则如您所定义的那样,如果为普通的指针函数这这样定义:
    viod (*start_routine)()对吗?      

TOP

应该可以的。      

TOP

发新话题