void (*p)() 、 void *p()和void *(*p)(void)的區別

#void(*p)() 這是一個指向函數的指針,函數的返回值類型是void,從這個聲明中能夠看出,第一個圓括號將運算符*和p結合在一塊兒,這表示p是一個指向函數的的指針,(*p)是一個函數,void爲返回值類型,第二個圓括號是函數的參數列表。函數

p是一個返回一個指針的函數,它的函數名是p,void *是返回值類型,因爲指針沒有指定返回值類型,因此返回的是一個通用型指針。 它的用法能夠參看下例:指針

#include<stdio.h>
int *max(int *p);
void main()
{
    int a[10]={96,23,45,86,79,63,58,36,29,95};
    int *p;
    p=max(a);
    printf(「max=%d\n」,*p);
}
int *max(int *p)
{
     int i,*q=p;
     for(i=1;i<10;i++)
     if(*(p+i)>*q)
          q=p+i;
     return q;
}

#void*(*p)(void) void *(*p)(void):函數返回值是void*指針類型。*p則是一個函數指針。括號中的void表示函數指針指向的函數參數爲void。code

相關文章
相關標籤/搜索