函数指针与指针函数的区别

函数指针与指针函数的区别


  函数指针:
  关键字为指针,不过其数据访问方式为一类函数。
  如:int (*math)(int,int);定义了一个指针math,它的数据访问方式为返回值为int,形参为(int,int)的一类函数。我们可以把这类函数的函数名赋值给math,这样math指针就指向了这个函数,你就可以通过(*math)(int,int)调用这个函数。
代码如下:
#include <stdio.h>

int add(int,int);
int sub(int,int);

int main(void)
{	
	int a=8;
	int b=4;
	int c;
        int (*math)(int,int);

	math=add;
        c=(*math)(a,b);
	printf("a+b=%d\n",c);
	return 0;
}
int add(int x,int y)
{
	return (x+y);
}
int sub(int x,int y)
{
	return (x-y);
}
     指针函数:
  关键字是函数,不过这个函数的返回值是一个指针。
代码如下:
#include <stdio.h>

float* search(float (*p)[4],int n)
{
	float *m;
	m=*(p+n);
	return m;
}
int main(void)
{
	float a[3][4]={11,12,13,14,21,22,23,24,31,32,33,34};
	float n;
	int i;
	float *o;

	printf("input n:\n");
	scanf("%f",&n);
	o=search(a,n);
	for(i=0;i<4;i++)
		printf("%f ",*(o+i));
		printf("\n");
	
}
注意:这个代码可以理解为有三个学生,序号分别为0,1,2,每个人有四门成绩,输出指定学生的四门科成绩!

float (*p)[4]:数组指针,类型为指针不过它的数据访问方式为四个float数据。可理解为(*p)为一个指针,其指向float[4]数组。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值