小甲鱼-C++快速入门笔记 35 之从函数或方法返回内存

动态内存的另一个常见用途是让函数申请并返回一个指向内存块的指针。掌握这个技巧很重要,尤其是在你打算使用由别人编写的库文件时。

如果不知道这个技巧,就只能让韩桑树返回一个简单的标量值,如整型、浮点型或字符型。换句话说,它既不能返回一个以上的值,也不能返回数组之类比较复杂的数据结构。

这个技巧的基本思路:在函数里调用new语句为某种对象或某种基本数据类型分配一块内存,再把那块内存的地址返回给程序的主代码,主代码将使用那块内存并在完成有关操作后立刻释放。

#include <iostream>
 
using namespace std;
 
int* newInt(int value);
 
int main()
{
	int *x = newInt(20);
 
	cout << *x << endl;
	delete x;
	x = NULL;
 
	return 0;
}
 
int *newInt(int value) //指针函数
{
	int *myInt = new int;
	*myInt = value;
 
	return myInt;
}

传址引用

#include <iostream>
 
using namespace std;
 
void swap(int *x, int *y);
 
int main()
{
	int a, b;
	a = 3; 
	b = 5;
 
	swap(&a, &b);
 
	cout << "a = " << a << "\n";
	cout << "b = " << b << "\n";
 
	return 0;
}
 
void swap(int *x, int *y)
{
#if 0
	int temp;
	temp = *x;
	*x = *y;
	*y = temp;
#endif
 
#if 1
	*x ^= *y;
	*y ^= *x;
	*x ^= *y;
#endif
}

指针函数和函数指针:

函数指针:指向函数首地址的指针变量成为函数指针

#include <stdio.h>
 
int fun(int x, int y);
 
int main()
{
	int a, b;
	int (*p)(int, int);    //声明函数指针
 
	scanf("%d", &a);
	p = fun;      //给函数指针p赋值,使它指向函数f
 
	printf("请输入10个数字: \n");
	for(int i=0; i<10; i++)
	{
		scanf("%d", &b);
		a = (*p)(a, b);    //通过指针p调用函数f
	}
 
	printf("The Max Number is: %d \n", a);
 
	return 0;
}
 
fun(int x, int y)
{
	int z;
	z = (x > y) ? x : y;
	return(z);
}

指针函数:一个函数可以带回一个整型数据的值,字符型值和实型类型的值,还可以带回指针类型的数据,使其指向某个地址单元。(本次课程的第一个代码就是用的指针函数)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值