#include<stdio.h>
#include<string.h>
#define N 10
char *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;
}
指针型函数与指向函数的指针
最新推荐文章于 2021-04-19 14:12:35 发布