函数指针和返回指针的函数 学习笔记

本文是关于函数指针和返回指针的函数的学习笔记。首先,介绍了如何使用函数指针变量调用函数,通过定义一个指针变量存储函数的入口地址实现。接着,探讨了将指向函数的指针变量作为其他函数参数的方法。最后,讨论了返回指针的函数的定义和应用,这类函数通常用于动态内存分配或创建对象等场景。
摘要由CSDN通过智能技术生成

一、用函数指针变量调用函数

一个函数在编译的时候,系统会给这个函数分配一个入口地址,这个入口地址就称为函数的地址(指针)。既然有地址,就可以定义一个指针变量来指向该函数,然后就可以通过指针变量调用该函数。
命名方式:数据类型标识符 (指针变量名) (形参列表)

传统函数举例:
int max (int x,int y)
{
	if(x>y)
		return x;
	else
		return y;
}
int main()
{
	int c;
	c = max(5,19);
	cout << c << endl; //输出19
}

将函数改造成函数指针形式

int (*p)(int x,int y);
p = max;//将函数max的入口地址赋给指针变量p(函数名代表函数的入口地址)
//p = &max; // 上条语句还可以写成这样
int c= (*p)(5,19);//将原来的max替换为(*p),调用*p,就是调用函数max。
//int c = p(5,19);//上条语句还可以写成 

二、把指向函数的指针变量作为函数参数

举例:
int max(int x,int y)
{
	if(x>y)
		return x;
	else
		return y;
}

int wmax (int a,int b,int(*func)(int c,int d))
{
	int result = func(a,b);
	return result;
}
int main()
{
	int c;
	c = wmax(5,19,max);
	cout << c << endl;//输出19

	int (*p)(int,int);
	p = max;
	c = wmax(23,34,p);//输出34
}

三、返回指针的函数

一般定义形式:
数据类型 * 函数名 (参数列表)

错误用法举例:
int *add(int x,int y)
{
	int sum = x+y;
	return &sum;//此处隐藏一个致命问题,add函数执行完,sum的内存会被系统回收。
}
int main()
{
	int *presult;
	presult = add(4,5);//执行add后,presult的内存已经不归开发者所有,开发者不应该从中取值或赋值。
	cout << *presult << endl;
}
如何改造该程序?可以将sum定义成一个全局变量。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值