指针型函数与指向函数的指针

来源:互联网 发布:mac虚拟机和双系统 编辑:程序博客网 时间:2024/06/11 01:29
#include<stdio.h>#include<string.h>#define N 10char *func(char *ch,int l,int r)//指针型函数{    static char mir[N];//返回的是指针值,故释放后应存在,故用static    int i,j;    for(i = 0;l <= r;l++)        mir[i++] = ch[l];    mir[i] = '\0';    return mir;}/*正常函数*/void print(){    printf("This is a test.\n");}int main(){    void (*a)();//定义一个指向一个无返回值函数的指针    a = print;//将该指针指向对应的函数    (*a)();//通过指针调用该函数    char ch[N],*p;//p指向一个字符地址,用来指向函数返回的地址    char *(*q)();//定义指向返回值为char指针类型的函数,应该用*(*q)    int l,r;//之所以这样,是因为这个变量的类型说明符应当是函数的返回值类型    gets(ch);    scanf("%d%d",&l,&r);    q = func;//注意给指向函数的指针赋值的方式,因为函数名就是该函数的首地址    p = (*q)(ch,l,r);    puts(p);    return 0;}

原创粉丝点击