1.指针函数
指针函数是指返回值位指针类型的函数定义形式位:函数返回类型 * 指针变量名(参数列表)
下面是一个将两个字符串连起来的函数
#include <stdio.h>
#include <string.h>
#include <math.h>
#define N 129
char* add(char* a,char* b,char* c);
int main()
{
char a[N],b[N],c[2*N],*p;
gets(a);
gets(b);
p = add(a,b,c);
printf("%s",p);
}
char* add(char* a,char* b,char* c)//不能在函数内部定义数组,数组会随函数运行完毕而释放空间,无法返回数组.
{
strcpy(c,a);
for(int i=strlen(c),j=0;i<strlen(a)+strlen(b);i++,j++)
{
c[i] = b [j];
if(i == strlen(a) +strlen(b) - 1) c[i+1] = '\0';
}
return c;
}
运行结果如下:
2.函数指针
函数指针是一个指向函数的指针定义行驶:函数类型 (*指针变量名) (参数列表)
#include <stdio.h>
int add(int a,int b);
int mul(int a,int b);
int caculate(int (*p)(int,int),int a,int b);
int main()
{
int a,b;
scanf("%d %d",&a,&b);
int (*p)(int,int);//定义了一个函数指针
p = add;//将指针指向函数add,等同于 p = &add;
int c = (*p)(a,b);//调用函数add
p = mul;//将指针指向函数mul,等同于 p = &mul;
int d = (*p)(a,b);//调用函数mul
int m = caculate(add,a,b);//将函数作为实参 相当于int m = add(a,b);
int n = caculate(mul,a,b); //将函数作为实参 相当于int n = mul(a,b);
printf("c=%d\n",c);
printf("d=%d\n",d);
printf("m=%d\n",m);
printf("n=%d\n",n);
return 0;
}
int add(int a,int b)
{
return a+b;
}
int mul(int a,int b)
{
return a*b;
}
int caculate(int (*p)(int,int),int a,int b)
{
return (*p)(a,b);
}
运行结果如下: