关于函数指针和指针函数

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);
}

运行结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值