【C++指针的学习】3 指针与函数

1.函数指针

函数的指针(地址):一个函数在编译时被分配给一个入口地址,这个入口地址就称为函数的指针。在C++中可定义一个指针变量,用它指向函数,然后通过改指针调用此函数。这种变量称为函数指针变量,简称函数指针。定义格式如下:
<数据类型> (*<函数指针名>(<参数类型表>); //注意括号的位置!区别于指针函数的定义。
注意:①“数据类型”:函数返回值类型;
   ②要求函数指针所指向的函数的返回值类型和<参数类型表>与函数指针一致。
   ③给函数指针赋值时,只需给出函数名,而不用给出参数。
   ④用函数指针调用函数时,有两种形式:1.(*p)(实参列表) 2.p(实参列表)。
   ⑤<类型参数列表>只有类型
   
eg1:用函数指针作为函数的参数,实现加法和乘法的调用,函数原型为“void op(int x,int y,int (*f)(int,int));”。

#include<iostream.h>

int Add(int a,int b)
{
	return a+b;
}

int Mult(int a, int b)
{
	return a*b;
}

int Op(int x,int y,int(*f)(int,int))
{
	return (*f)(x,y);
}

int main()
{
	int a=0,b=0;
	cout<<"请输入两个数:";
	cin>>a>>b;
	int (*p)(int, int);

	p=Add;
	cout<<"a+b="<<Op(a,b,Add)<<endl;

	p=Mult;
	cout<<"a*b="<<Op(a,b,Mult)<<endl;
	
	return 0;
}

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

2.指针函数

定义:返回值为指针值(地址)的函数称为指针函数。
定义形式为:<数据类型>*<函数名>(<参数类型表>)

eg2:用指针函数编写一个求字符串逆向的函数。

#include<iostream>
#include<string>
using namespace std;

char *tail(char *p,int *length)
{
	while(*p!='\0')
	{
		++p;
		++(*length);//记录字符串的长度
	}
	return p;//指向'\0'位置
}

int main()
{
	char *s="Hello world!";
	int length=0;
	char *p=tail(s,&length);
	for(int i=1;i<=length;i++)
	  cout<<*(p-i)<<" ";
	cout<<endl;
	return 0;
}

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

3.总结

注意指针函数和函数指针的定义形式的区别。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值