指针函数与函数指针的区别
一、
1、指针函数是指带指针的函数,即本质是一个函数。函数返回类型是某一类型的指针
类型标识符 *函数名(参数表)
int *f(x,y);
float *fun();float *p;p = fun(a);
例如:int *GetDate();int * aaa(int,int);
int * GetDate(int wk,int dy);main(){ int wk,dy; do { printf(Enter week(1-5)day(1-7)\n); scanf(%d%d,&wk,&dy); } while(wk<1||wk>5||dy<1||dy>7); printf(%d\n,*GetDate(wk,dy));}int * GetDate(int wk,int dy){ static int calendar[5][7]= { {1,2,3,4,5,6,7}, {8,9,10,11,12,13,14}, {15,16,17,18,19,20,21}, {22,23,24,25,26,27,28}, {29,30,31,-1} }; return &calendar[wk-1][dy-1];}int (*f) (int x); /* 声明一个函数指针 */f=func; /* 将func函数的首地址赋给指针f */
类型说明符 (*函数名)(参数)
void (*fptr)();
fptr=&Function;fptr=Function;
x=(*fptr)();x=fptr();
void (*funcp)();void FileFunc(),EditFunc();main(){ funcp=FileFunc; (*funcp)(); funcp=EditFunc; (*funcp)();}void FileFunc(){ printf("FileFunc\n"); }void EditFunc(){ printf("EditFunc\n");}char ** cp;
static char *ngx_events_block(ngx_conf_t *cf, ngx_command_t *cmd, void *conf){ char *rv; void ***ctx; ngx_uint_t i; ngx_conf_t pcf; ngx_event_module_t *m;char c='A';char *p=&c;char **cp=&p;
char *p1=*cp;char c1=**cp;
void FindCredit(int **);main(){ int vals[]={7,6,5,-4,3,2,1,0}; int *fp=vals; FindCredit(&fp); printf(%d\n,*fp);}void FindCredit(int ** fpp){ while(**fpp!=0) if(**fpp<0) break; else (*fpp)++;} char *Names[]={ Bill, Sam, Jim, Paul, Charles, 0}; main(){ char **nm=Names; while(*nm!=0) printf(%s\n,*nm++);}